做网站实际尺寸是多少,网站里的横幅怎么做,西安网站建设易网宣,优秀网站的颜色搭配如果你已经对数据结构与算法略知一二#xff0c;现在正在复习数据结构与算法的一些重点知识 ------------------------------------------------------------------------------------------------------------------------- 点赞收藏#x1f308;#xff0c;每天更新总结文… 如果你已经对数据结构与算法略知一二现在正在复习数据结构与算法的一些重点知识 ------------------------------------------------------------------------------------------------------------------------- 点赞收藏每天更新总结文章多以图文形式方便记忆均为网上搜集资料以及AI⭐ ------------------------------------------------------------------------------------------------------------------------- 时间2025/5/23/ 19: 40分 ----------------------------------- 种一棵树最好的机会是十年前其次是现在 博主链接黎明smaly-CSDN博客 快来参与讨论点赞、收藏⭐、分享共创活力社区 一、LeetCode 283.移动零 方法一 题目中要求我们在原数组进行原地操作所以先排除哈希这些一般对于数组的题要求原地进行的首先考虑双指针这道题我们采用双指针我们定义一个左指针和一个右指针这里的指针可以采用下标的方式进行而不是真正意义上的指针变量左右指针同时指向第一个元素右指针先走如果碰到0继续走如果碰到非0也就是我们要的元素则将他赋值给左指针对应的元素左指针才走走到右指针走到结尾为止这样我们就拿到了所有的非0元素并且相对顺序不变只不过 后面的元素还不是0最好我们需要把循环方式把剩下的元素赋值成0 代码 时间复杂度 O(N) N是数组的长度 空间复杂度 O(1) 二、LeetCode 11.盛最多水的容器 方法一 看到跟数组相关的又是求某个阶段最大/最小值问题的我们可以考虑贪心算法我们还是采用双指针的方式左右指针左指针指向开头右指针指向结尾此时这两个指针间最大可容纳水为 min(17*8 1*88 按示例图来的)然后我们将这个最大值记录下来此时就知道了一个局部解移动指针移动数字小的那个指针只有数字小的移动才能找到更大值不然最大空间一直卡在了数字小的上面因为有瓶颈移动完继续计算最大可容纳水量 min(8, 7) * 7 1*7 7此时又拿到了一个局部解将其与上一次的进行判断大的存到我们定义的最大值变量里面等下一次判断继续用不断这样循环如果两个指针值相同那么可以随便移动一个直到左右指针重合此时最大值变量里面存的就是最大可容纳水量 代码 时间复杂度 O(N) N是数组长度 空间复杂度 O(1) 三、LeetCode 15.三数之和 先仔细看题目明白题意再做题 方法一 如果我们按照暴力枚举的方式需要O(N^3)次方时间复杂度并且我们最后还有去重我们寻找新的思路简化一些我们发现题目无非是要求找出数组中三数之和0的 此时就能想到了有一道题叫两数之和也是数组的我们写第一层循环来找第一个数其余的两个数我们当作两数之和这道题来做 第一个数找到后其余两数之和就是 0-第一个数我们首先要对数组进行排序排序是为了去重也是为了更好的求两数写第一层for循环找到每个三元组的第一个数 第二层循环 设置左右双指针左指针指向第一个数右边的数也就是i1,右指针指向尾巴 判断左指针右指针是否0-第一个数如果等于则找到了第一个三元组 如果!0且大于0-第一个数则代表值大了右指针向左移动因为已经排序过了右边的值是最大值所以它移动一位变小一点 然后继续判断如果值小了就左指针向右移动一位变大些如此下去就能找到所有的三元组然后我们要处理去重的问题 我们在上面的基础下加一些判断条件即可找到一个三元组后左右指针分别移动到跟当前值相比的非重复值上去重 代码 时间复杂度 O(N^2) 空间复杂度 O(logN) 总结⭐
这三道题都是跟双指针有关的
对于双指针的使用要熟悉 加油为了更好的明天
种一棵树最好的机会是十年前其次是现在