数组
996冲冲冲
这个作者很懒,什么都没留下…
展开
-
leetcode26. 删除有序数组中的重复项
双指针解决,保证慢指针前面的数组没有重复。原创 2022-10-18 21:44:14 · 58 阅读 · 0 评论 -
leetcode76. 最小覆盖子串
解题思路:滑动窗口用一个左右可移动的双指针寻找符合条件的一段字符串另一种写法原创 2022-11-03 22:23:35 · 76 阅读 · 0 评论 -
leetcode977. 有序数组的平方
因为是有序的,所以前面负数部分平方后是降序,后面正数部分是升序。用首尾双指针判断,从最大的开始依次放入答案数组。原创 2022-11-03 15:39:03 · 49 阅读 · 0 评论 -
leetcode986. 区间列表的交集
【代码】leetcode986. 区间列表的交集。原创 2022-11-03 14:59:04 · 76 阅读 · 0 评论 -
leetcode696. 计数二进制子串
统计一下重复元素的个数计入count数组,相邻的两个数中的较小值就是重复字串的数量。如000111就是01,0011,000111三个。用变量代替数组,降低空间复杂度。原创 2022-11-02 22:47:19 · 85 阅读 · 0 评论 -
leetcode763. 划分字母区间
更新规则:1. 具体来说就是到达第一个字母的最后位置之前,如果这之间有新的字母的最后位置更靠后。3. 以此类推,一直到更新不了最后位置了也就是循环走到了段的最后位置时。就是从头开始先找到第一个字母的最后位置,并且更新段的最后位置。题目要求不含重复字母的划分为最多段,所以采用贪心的思想。2. 那么就需要把段的最后位置更新成这个靠后的。4. 这时说明完成了所有更新,到达了分割点。5. 循环进行下一轮的分割。原创 2022-11-02 21:16:14 · 58 阅读 · 0 评论 -
leetcode905. 按奇偶排序数组
思路双指针,一个从前往后找奇数,一个从后往前找偶数。原创 2022-11-02 11:26:50 · 104 阅读 · 0 评论 -
leetcode680. 验证回文串 II
【代码】leetcode680. 验证回文串 II。原创 2022-11-02 11:16:22 · 82 阅读 · 0 评论 -
leetcode556. 下一个更大元素 III
和下一个排列一模一样的思路。原创 2022-11-02 10:54:02 · 59 阅读 · 0 评论 -
leetcode532. 数组中的 k-diff 数对
为了防止(1,4,7)k=3,这种情况会出现(1,4),(4,1)这种重复,为了防止这样情况的出现,对于一个元素我们只让他和比自己小的数进行组合,这样去重。其次再用一个哈希表来去除数组中重复元素导致的重复。排序之后双指针找符合的一对x,y。原创 2022-10-30 21:37:18 · 71 阅读 · 0 评论 -
leetcode581. 最短无序连续子数组
给复制数组排序后对比,相同的位置上元素表示是正确的,找到左右两端不正确的位置即可。双指针,同时从两端开找,从左到右应该满足升序,从右到左应该满足降序。原创 2022-10-29 21:37:55 · 58 阅读 · 0 评论 -
leetcode481. 神奇字符串
注意神奇字符串的生成规则,由于只能由1,2组成,所以交替生成,不能连续生成同一个字符。根据所在位置的奇偶来判断应该生成1还是2,最后生成所求长度的字符串,统计1的个数。原创 2022-10-29 09:13:44 · 177 阅读 · 0 评论 -
leetcode557. 反转字符串中的单词 III
【代码】leetcode557. 反转字符串中的单词 III。原创 2022-10-27 10:11:40 · 76 阅读 · 0 评论 -
leetcode202. 快乐数
借助上面的分析,要么到达1要么循环,而且1的后面全都是1所以fast指针不会跳过1。所以解题的思路是用一个哈希表存储计算出的所有的会生成的数字。跟链表快慢指针一样,为了进入循环fast先走一步。首先要清楚计算下去要么会等于1要么会陷入循环。这里表明了是不会越算越大到无穷大的。如果不循环了就会最终得出1。如果循环了说明是错的。原创 2022-10-25 10:52:38 · 47 阅读 · 0 评论 -
leetcode189. 轮转数组
先全部反转,这样需要反转的k个就被换到了前面。再反转后面n-k个也恢复成正确顺序。之后反转前面k个恢复成正确的顺序。原创 2022-10-24 21:46:09 · 64 阅读 · 0 评论 -
leetcode165. 比较版本号
用内置函数,由于可能长度不一样,填0补齐,同一个分隔点前的长度不一样没关系,因为int了,前导零数目不一样也没关系。双指针,一边遍历一边判断。注意每次判断一个分割点之前的是否相等之后跳过分隔点判断下一个。原创 2022-10-24 20:31:20 · 92 阅读 · 0 评论 -
leetcode151. 反转字符串中的单词
先按空格把每个单词取出来放入数组。原创 2022-10-24 17:15:47 · 66 阅读 · 0 评论 -
leetcode125. 验证回文串
上面是先处理在迭代比较,下面是一边迭代一边处理,降低空间复杂度。主要熟悉一下字符串的内置函数的使用。原创 2022-10-24 11:28:53 · 61 阅读 · 0 评论 -
leetcode88. 合并两个有序数组
不用辅助数组的做法,就是从后往前放,因为已经排好序了,双指针从后往前。原创 2022-10-23 22:34:17 · 227 阅读 · 0 评论 -
leetcode80. 删除有序数组中的重复项 II
官解:slow对应下标是2长度就是三,所以slow是删除后数组的下标的起点。如果有重复才会且大于两个,fast和slow才会指向不同的位置。fast会移动到不重复的地方,slow是删除后数组的下标的起点,所以前面的fast换到slow的位置。原创 2022-10-23 20:36:29 · 64 阅读 · 0 评论 -
leetcode75. 颜色分类
0,1,2排序问题,双指针一个从前往后排0一个从后往前排2。原创 2022-10-23 11:32:26 · 91 阅读 · 0 评论 -
leetcode42. 接雨水
双指针代替计算左右最大值,同时开始就行,一定有一边的最大值较小,说明当前柱子最多水的高度就是那么多,之后再减去柱子自身高度.动态规划的思路:为了减少查找次数我们先把从左到右,和从右到左每个节点的左右最大值分别记录在左右两个数组里。因为我们知道从左往右左边第一个节点的最大值是自身,从右往左右边的第一个节点的最大值也是自身。具体来说每个节点(列)能存的水等于它左边的最大值和右边的最大值里较小的一个减去自身。方法:按列计算加上动态规划存储最大值。差不多的动态规划思路进行简化。原创 2022-10-22 11:08:37 · 157 阅读 · 0 评论 -
leetcode31. 下一个排列
【代码】leetcode31. 下一个排列。原创 2022-10-21 21:00:58 · 65 阅读 · 0 评论 -
leetcode16. 最接近的三数之和
用三数之和的思路,先确定一个遍历,剩下的两个指向头和尾。每次改变之前先比较一下记录最近的,然后向target靠近。原创 2022-10-20 22:31:22 · 80 阅读 · 0 评论 -
leetcode11. 盛最多水的容器
用双指针指向头尾,每次移动较小的那个。为什么移动较小的,因为移动较大的一定会变小。所以把较小的那个指针当作边界的最大情况我们已经考虑了。所以可以抛弃他寻找下一个可能,迭代的执行此过程。原创 2022-10-20 21:40:17 · 52 阅读 · 0 评论 -
leetcode18. 四数之和
和三数之和一模一样的,就是多加一个遍历。原创 2022-10-20 20:38:01 · 71 阅读 · 0 评论 -
nsum问题总结
while i < len(nums) - 1 and nums[i] == nums[i+1]: #去重。原创 2022-10-20 20:24:23 · 204 阅读 · 0 评论 -
leetcode15. 三数之和
固定第一个,后面当作排序数组求目标值来做,用双指针找。原创 2022-10-19 22:42:43 · 62 阅读 · 0 评论 -
leetcode1. 两数之和
这里注意一下第二次遍历为什么不用从头开始,因为前面每个数都会和后面的加一次了。值当作字典的键,下标当作字典的值。所以相当于都计算过一次了。原创 2022-10-19 20:57:16 · 79 阅读 · 0 评论 -
leetcode5. 最长回文子串
这题的重点是不知道回文串的奇偶,所以先写一个判断回文串的函数,然后奇偶都算一遍,保留最长的。因为分奇偶,所以要用双指针,奇数就指向同一个节点,偶数就指向相邻的两个节点。原创 2022-10-19 16:13:28 · 60 阅读 · 0 评论 -
leetcode344. 反转字符串
【代码】leetcode344. 反转字符串。原创 2022-10-19 14:04:47 · 58 阅读 · 0 评论 -
leetcode283. 移动零
双指针,快指针找不为0的元素放到前面一次遍历就好了。只有遇到0的时候分分开快慢指针。原创 2022-10-19 13:47:37 · 83 阅读 · 0 评论