![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode Hot100
喻言老公贴贴
这个作者很懒,什么都没留下…
展开
-
Leetcode.46 全排列
分为交换法和标记数组法。原创 2023-08-01 00:27:51 · 48 阅读 · 0 评论 -
Leetcode.42 接雨水
从左到右按每一列来看,只要左右两边的柱子高于自身柱子的高度即能接得住水,而装水的多少,根据木桶效应,我们只需要看左边最高的墙和右边最高的墙中较矮的一个就够了。所以此时能接得住1格子水。原创 2023-07-31 22:47:01 · 53 阅读 · 0 评论 -
Leetcode.39 组合总和
则需要把target<0放到循环外判断,若<0则直接return。原创 2023-07-30 20:30:10 · 54 阅读 · 0 评论 -
Leetcode, 34 在排序数组中查找元素的第一个和最后一个位置
进行两次二分查找,一次找第一个一次找最后一个。原创 2023-07-30 17:46:40 · 56 阅读 · 0 评论 -
Leetcode.33 搜索旋转排序数组
1、如果[l, mid - 1] 是有序数组,且 target 的大小满足nums[l]<=target<nums[mid],则我们应该将搜索范围缩小至 [l, mid - 1],否则在 [mid + 1, r] 中寻找。2、如果 [mid, r] 是有序数组,且 target 的大小满足nums[mid]<target<=nums[r],则我们应该将搜索范围缩小至[mid + 1, r],否则在 [l, mid - 1] 中寻找。我们将数组从中间分开成左右两部分的时候,一定有一部分的数组是有序的。原创 2023-07-30 16:08:36 · 104 阅读 · 0 评论 -
Leetcode.31 下一个排列
下一个排列意思就是一个数组给定若干个数字,将其组合为一个整数。如何将这些数字重新排列,以得到下一个更大的整数。原创 2023-07-29 21:46:55 · 31 阅读 · 0 评论 -
Leetcode.22 括号生成
【代码】Leetcode.22 括号生成。原创 2023-07-29 18:41:06 · 35 阅读 · 0 评论 -
Leetcode.17 电话号码的字母组合
注意因为有函数调用问题,前三行是定义在全局的,剩下的看代码注释吧……原创 2023-07-28 22:25:19 · 24 阅读 · 0 评论 -
Leetcode.15 三数之和
首先对数组进行排序,排序后固定一个数 nums[i],再使用左右指针指向nums[i]后面的两端,数字分别为nums[L]和nums[R],计算三个数的和 sum 判断是否满足为0,满足则添加进结果集。4、同理,当sum=0时,nums[R] = nums[R-1] 则会导致结果重复,应该跳过,R–2、如果nums[i] = nums[i−1],则说明该数字重复,会导致结果重复,所以应该跳过,3、当sum=0时,nums[L] = nums[L+1] 则会导致结果重复,应该跳过,L++原创 2023-07-28 21:20:24 · 24 阅读 · 0 评论 -
Leetcode.11 盛最多水的容器
木桶短板效应, 面积等于较短边的长度*两边之间的距离,所以用双指针分别在一头一尾然后向中间移动。其实更通俗的说法,面积由较短边决定,那我们就应该让较短边尽量大,所以舍弃现在较小的边。begin指针指向开头,end指针指向最后,求面积后较短的边向中间移动。我们先假设移动的是较长边a,保留较短的边b,然后分情况讨论。1、假如移动后a1>b,此时的面积还是由较短边b决定,2、假如移动后a1<b,此时面积由较短边a1决定,原创 2023-07-27 18:28:08 · 25 阅读 · 0 评论 -
Leetcode.5 最长回文子串
2、如果去掉 s[i…j] 头尾两个字符子串 s[i + 1…j - 1] 的长度严格小于 2(不构成区间),为" "或者"b"这种情况,即最中间是空或者只有一个字符,即此时的字符串长度(j-1)-(i+1)+1<2,即j-i<3,此时 s[i…j] 是否是回文只取决于 s[i] 与 s[j] 是否相等。j] 是否是回文取决于s[i] 与 s[j] 是否相等且s[i + 1…j - 1]是否为回文串。1、字符串只有一个字符,则是回文串直接返回该字符串。原创 2023-07-27 16:58:13 · 30 阅读 · 0 评论 -
Leetcode.4 寻找两个正序数组的中位数
暴力解的,就是按升序合并两个数组,存到新数组c中,然后再分情况判断c的长度是奇数还是偶数,奇数则中位数就是。,注意因为输出是double类型,所以要除2.0000。原创 2023-07-27 00:48:44 · 27 阅读 · 0 评论 -
Leetcode.3 无重复字符的最长字串
2、end指针每次向后移动一次后,使用for循环遍历看start和end之间的字符有没有和end新指向的字符相同,若有则将start指针移动到相同字符的后面,并更新此时的无重复字符串长度。1、设置start和end指针,start指向无重复字符串的第一个字符,end指向无重复字符串的最后,并且一直向后移动。3、记录无重复字符串长度为num=end-start,取最大值。原创 2023-07-26 23:22:00 · 28 阅读 · 0 评论 -
Leetcode.2 两数相加
思路:链表逆序存储数字,则链表头部节点开始分别代表个十百千位,两个链表对应节点相加即为和的相应位,注意考虑进位的情况,所以结果链表节点的值为(l1+l2+flag)%10,同时记录该位相加完是否有进位。2、两个指针的作用,head用来记录链表头结点用于函数返回,tail用于链表尾插法插入元素。1、两个链表都遍历完后,最后一位进位需要添加至链表结尾。原创 2023-07-25 23:17:38 · 23 阅读 · 0 评论 -
Leetcode.617 合并二叉树
4、令root->left再走一遍前三步的流程,注意传入的参数是两颗二叉树同个位置的节点,所以是root1->left和root2->left,都是left。3、都不为null,则将root1的值改成root1+root2,此时根节点root已合并完成,接下来就是递归。5、同第四步,令root->right再走一遍前三步的流程。1、先判断root1是否为null,是则返回root2。2、判断root2是否为null,是则返回root1。6、最后返回root1。原创 2023-07-25 15:39:00 · 65 阅读 · 0 评论 -
Leetcode.543 二叉树的直径
以这张图为例:原创 2023-07-25 01:18:38 · 23 阅读 · 0 评论 -
Leetcode.461 汉明距离
题意是求x和y二进制数有几位不同,即求x和y异或后的结果有几个1,因为0和1异或结果=1。2、求1的个数可以采用逐位判断后右移的方法,若末位为1则n+1,接着右移。3、重复循环第二步直到res=0。原创 2023-07-24 23:23:03 · 27 阅读 · 0 评论 -
Leetcode.448 找到所有数组中消失的数字
要考虑一个问题就是:有可能我们拿到的这个nums[i]已经是被加过len了,所以index不能直接取nums[i]-1,而是要(nums[i]-1)对len取余数,即。那么数值小于等于len的,一定没有进行+len这个操作,则可以认为这个位置所对应的下标没有出现过,则放入数组res中返回。完成一次循环后此时如果出现过的数字,那这个数字作为下标的地方那个数值一定会大于len。原创 2023-07-24 19:46:45 · 24 阅读 · 0 评论 -
Leetcode.338 比特币计数
偶数:偶数的最低位一定是0,偶数是相当于被某个更小的数乘2,在二进制运算中,就是左移一位,也就是在低位多加1个0,那样就说明dp[i] = dp[i / 2],因为补0不影响1的个数。那样就说明dp[i] = dp[i-1] + 1,当然也可以写成dp[i] = dp[i / 2] + 1。奇数:奇数由不大于该数的偶数+1得到,偶数+1在二进制位上会发生什么?会在低位多加1个1,原创 2023-07-22 17:08:15 · 134 阅读 · 0 评论 -
Leetcode.283 移动零
2、i指针向后移动,遍整个nums数组,如果 nums[i]!= 0,也就是说遇到了非0元素,此时我们就将nums[i]元素放置到nums[k]位置,同时k++后一位。1、定义两个指针i和k,初始化i = 0,k = 0。3、最后将k位置之后的元素都赋值为0。原创 2023-07-22 16:28:22 · 31 阅读 · 0 评论 -
Leetcode. 234 回文链表
2、从慢指针开始反转后半段链表,注意下图,中间节点要指向null,所以在代码初始化rhead为null。3、从head和rhead出发一步一步遍历比较val,若不相同则返回false,全部相同则返回true。1、快慢指针,快指针走到结尾时慢指针走到中间。原创 2023-07-22 16:04:47 · 28 阅读 · 0 评论 -
Leetcode.226 翻转二叉树
2、依次将每个节点的左右孩子交换。1、判断是否为空,为空则返回。原创 2023-07-17 23:55:14 · 30 阅读 · 1 评论 -
Leetcode.206 反转链表
4、完成反转后将cur指针和pre指针都向后移(先移动pre,另pre=cur,cur指向一开始temp保存的节点。2、定义一个临时指针变量temp指向cur->next(因为下一步要改变cur->next。5、最后return pre是因为反转链表完成后pre指向头节点。1、定义一个pre指针指向null,一个cur指针指向head。3、反转,将cur->next 指向pre。原创 2023-07-13 21:52:36 · 32 阅读 · 1 评论 -
Leetcode.141环形链表
思路有点类似小学的相遇追及问题,一个速度快一个速度慢的两个人在跑道上匀速跑,若干圈后他们总会相遇,就用这个来证明链表中有环的存在。原创 2023-07-13 21:15:40 · 28 阅读 · 1 评论 -
Leetcode.160相交链表
思路看的这里看完之后有个疑惑的点,有没有可能两个链表相交后又分开了,为什么相交后一定就只有一条链表,后来想了一下,一个节点可以多个节点指向,但不能自己指向多个别的节点,所以相交节点后面一定是全部重合的,我傻了orz。原创 2023-07-13 18:41:21 · 46 阅读 · 1 评论 -
Leetcode.169 多数元素
所以不会抵消完,到最后还是会出现。原创 2023-07-12 22:33:07 · 44 阅读 · 1 评论 -
Leetcode.136只出现一次的数字
因为异或运算满足交换律,所以可以把相同的放在一起运算变成零,最后会剩下只出现一次的数字与0异或,结果也是只出现一次的数字。原创 2023-07-12 21:33:55 · 47 阅读 · 1 评论 -
leetcode121.买卖股票的最佳时期
【代码】leetcode121.买卖股票的最佳时期。原创 2023-07-12 17:47:49 · 47 阅读 · 1 评论 -
leetcode104.二叉树的最大深度
leetcode104.二叉树的最大深度原创 2023-03-16 13:05:09 · 88 阅读 · 0 评论 -
leetcode 101.对称二叉树
leetcode 101.对称二叉树原创 2023-03-14 15:56:43 · 34 阅读 · 0 评论 -
leetcode 94.二叉树的中序遍历
Leet code 94.二叉树的中序遍历原创 2023-03-09 14:03:52 · 50 阅读 · 0 评论 -
leetcode 70.爬楼梯
leetcode 70.爬楼梯原创 2023-03-09 11:15:15 · 40 阅读 · 0 评论 -
leetcode21.合并两个有序链表
leetcode21.合并两个有序链表原创 2023-03-08 18:33:55 · 43 阅读 · 0 评论 -
Leet code 20.有效的括号
leetcode 20.有效的括号原创 2023-03-07 16:55:57 · 117 阅读 · 0 评论