草庐IT

$leetcode

全部标签

代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素、总结

打卡第十三天,昨天休息,今天继续栈和队列,重新复习了单调队列,上次看ACwing的视频学了单调队列,没有完全学明白,重学之后比之前清晰多了今日任务滑动窗口最大值347.前K个高频元素总结239.滑动窗口最大值给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。我的题解classSolution{public:vectorint>maxSlidingWindow(vectorint>&nums,intk){inthh=0,tt=-1;intq[100010];vectorint

【Leetcode】移除链表元素 链表的中间节点 链表中倒数第k个节点

目录一.【Leetcode203】移除链表元素1.链接2.题目再现 A.双指针法B.类尾删法C.哨兵位二.【Leetcode876】链表的中间节点1.链接:链表的中间节点2.题目再现3.解法:快慢指针三.链表中倒数第k个节点1.链接:链表中倒数第k个节点2.题目再现3.解法:快慢指针一.【Leetcode203】移除链表元素1.链接移除链表元素2.题目再现 A.双指针法1.创建一个指针cur=head 和一个指针 pre=NULL;  2.用cur->val与val比较,如果不相等则把cur赋给pre使cur指向下一个节点,即  cur=cur->next;3.如果相等则使pre的next指向

【Leetcode】移除链表元素 链表的中间节点 链表中倒数第k个节点

目录一.【Leetcode203】移除链表元素1.链接2.题目再现 A.双指针法B.类尾删法C.哨兵位二.【Leetcode876】链表的中间节点1.链接:链表的中间节点2.题目再现3.解法:快慢指针三.链表中倒数第k个节点1.链接:链表中倒数第k个节点2.题目再现3.解法:快慢指针一.【Leetcode203】移除链表元素1.链接移除链表元素2.题目再现 A.双指针法1.创建一个指针cur=head 和一个指针 pre=NULL;  2.用cur->val与val比较,如果不相等则把cur赋给pre使cur指向下一个节点,即  cur=cur->next;3.如果相等则使pre的next指向

LC-1824. 最少侧跳次(动态规划)

1824.最少侧跳次数难度中等49给你一个长度为n的3跑道道路,它总共包含n+1个点,编号为0到n。一只青蛙从0号点第二条跑道出发,它想要跳到点n处。然而道路上可能有一些障碍。给你一个长度为n+1的数组obstacles,其中obstacles[i](取值范围从0到3)表示在点i处的obstacles[i]跑道上有一个障碍。如果obstacles[i]==0,那么点i处没有障碍。任何一个点的三条跑道中最多有一个障碍。比方说,如果obstacles[2]==1,那么说明在点2处跑道1有障碍。这只青蛙从点i跳到点i+1且跑道不变的前提是点i+1的同一跑道上没有障碍。为了躲避障碍,这只青蛙也可以在同

LC-1824. 最少侧跳次(动态规划)

1824.最少侧跳次数难度中等49给你一个长度为n的3跑道道路,它总共包含n+1个点,编号为0到n。一只青蛙从0号点第二条跑道出发,它想要跳到点n处。然而道路上可能有一些障碍。给你一个长度为n+1的数组obstacles,其中obstacles[i](取值范围从0到3)表示在点i处的obstacles[i]跑道上有一个障碍。如果obstacles[i]==0,那么点i处没有障碍。任何一个点的三条跑道中最多有一个障碍。比方说,如果obstacles[2]==1,那么说明在点2处跑道1有障碍。这只青蛙从点i跳到点i+1且跑道不变的前提是点i+1的同一跑道上没有障碍。为了躲避障碍,这只青蛙也可以在同

计算平方根的一些方法总结(C++)

tags:DSAMathC++写在前面重新熟悉下计算平方根的算法,当然对于力扣的平方根69.x的平方根-力扣(LeetCode),已经出现了不下五种的方法了,这次简要总结下.代码均为C++.调包return(int)sqrt(x);return(int)pow(x,.5);高级调包应用了x=exp⁡(ln⁡x2)\sqrtx=\exp(\frac{\lnx}2)x​=exp(2lnx​)这一关系,需要注意浮点数舍入误差.intmySqrt(intx){if(x==0){return0;}intans=exp(0.5*log(x));return((longlong)(ans+1)*(ans+1

计算平方根的一些方法总结(C++)

tags:DSAMathC++写在前面重新熟悉下计算平方根的算法,当然对于力扣的平方根69.x的平方根-力扣(LeetCode),已经出现了不下五种的方法了,这次简要总结下.代码均为C++.调包return(int)sqrt(x);return(int)pow(x,.5);高级调包应用了x=exp⁡(ln⁡x2)\sqrtx=\exp(\frac{\lnx}2)x​=exp(2lnx​)这一关系,需要注意浮点数舍入误差.intmySqrt(intx){if(x==0){return0;}intans=exp(0.5*log(x));return((longlong)(ans+1)*(ans+1

算法leetcode|29. 两数相除(rust重拳出击)

文章目录29.两数相除:样例1:样例2:提示:分析:题解:rustgoc++cpythonjava29.两数相除:给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和mod运算符。返回被除数dividend除以除数divisor得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345)=8以及truncate(-2.7335)=-2样例1:输入: dividend=10,divisor=3 输出: 3 解释: 10/3=truncate(3.33333..)=truncate(3)=3样例2:输入: divide

算法leetcode|29. 两数相除(rust重拳出击)

文章目录29.两数相除:样例1:样例2:提示:分析:题解:rustgoc++cpythonjava29.两数相除:给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和mod运算符。返回被除数dividend除以除数divisor得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345)=8以及truncate(-2.7335)=-2样例1:输入: dividend=10,divisor=3 输出: 3 解释: 10/3=truncate(3.33333..)=truncate(3)=3样例2:输入: divide

代码随想录day02| 977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵 II

目录977 有序数组的平方209 长度最小的子数组59 螺旋矩阵II977 有序数组的平方题目链接代码随想录题解看到题目的第一想法:这道题之前有遇到过,第一思路是判断数组是否是全为正数或者全为负数,对上面这两种情况单独处理;如果数组既包含正数也包含负数,就找到第一个出现的正数,而后拿两个指针分别向左右移动,但是这块的处理上一直无法ac,后面在仔细研究一下。看完代码随想录之后的想法:卡哥的方法清晰明了~代码实现:我的思路:对于有break的for循环,当break的时候,后面那次i++是不执行的;所以处理后面的循环时i+1;当一侧到边界的时候,另一侧肯定未到边界,比如左侧已越界,需要rightc