当前位置: 首页 > news >正文

台州网站优化方案网站开发和程序开发

台州网站优化方案,网站开发和程序开发,企业一般用什么邮箱?,网站建设初步规划书【刷题笔记】数组-双指针||覆盖||重复元素 目录 移除元素删除有序数组中的重复项删除有序数组中的重复项 II分析 移除元素 https://leetcode.cn/problems/remove-element/ 给你一个数组 nums 和一个值 val#xff0c;你需要 原地 移除所有数值等于 val 的元素#xff0c;并…【刷题笔记】数组-双指针||覆盖||重复元素 目录 移除元素删除有序数组中的重复项删除有序数组中的重复项 II分析 移除元素 https://leetcode.cn/problems/remove-element/ 给你一个数组 nums 和一个值 val你需要 原地 移除所有数值等于 val 的元素并返回移除后数组的新长度。 不要使用额外的数组空间你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 class Solution(object):def removeElement(self, nums, val):if len(nums) 0:return 0slow, fast 0, 0while fast len(nums):if nums[fast] ! val:nums[slow] nums[fast]slow slow 1fast fast 1return slow删除有序数组中的重复项 https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 给你一个 非严格递增排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过 更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。 返回 k 。 class Solution(object):def removeDuplicates(self, nums)::type nums: List[int]:rtype: intslow, fast 1, 1while fast len(nums):if nums[slow - 1] ! nums[fast]:nums[slow] nums[fast]slow slow 1fast fast 1return slow删除有序数组中的重复项 II https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/ 给你一个有序数组 nums 请你 原地 删除重复出现的元素使得出现次数超过两次的元素只出现两次 返回删除后数组的新长度。 不要使用额外的数组空间你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 class Solution {public int removeDuplicates(int[] nums) {if (nums.length 2) return nums.length;int slow 2, fast 2;while (fast nums.length) {if (nums[slow - 2] ! nums[fast])nums[slow] nums[fast];fast;}return slow;} }分析 这一类题目在数组中原地修改这种题目经常利用后面的元素将前面的元素覆盖。这涉及到两个指针一个slow一个fast。slow代表我们当前的索引该索引位置有两个可能操作保留、覆盖。fast表示真正的遍历索引判断该元素是否符合题目要求如果符合则利用该元素覆盖slow位置。 比如删除有序数组中的重复项 II题目中我们首先设置slow0fast0。然后设置大体框架 slow, fast 0, 0 while (fast len(nums)): ...我们看到fast是真实的遍历指针所以判断遍历的框架也是利用fast。 接下来判断fast是否满足条件nums[fast] ! val如果满足条件则将该元素在slow位置上覆盖。 而对于删除多个重复项这个问题我们依然满足这个框架 slow, fast while fast len(nums): ...在做算法题的时候我们需要用一般性思维即不要一上来就考虑初始条件或者边界条件而是要从一般情况下考虑问题。 假设我们已经到算法中间的某一步此时我们认为slow之前的元素都已经满足要求那么fast什么时候可以覆盖重写slow位置上的元素呢 如上图假设 v m v_m vm​可以放在slow的位置那么 v m v_m vm​不应该和 v k − 2 v_{k-2} vk−2​相等。因为什么再次强调我们应该具备一般思维当我们的指针走到slow的时候slow之前的元素完全满足每个元素最多有两个也就是说最坏的情况就是 v k − 2 v k − 1 v m v_{k-2}v_{k-1}v_m vk−2​vk−1​vm​即 nums[slow-2] nums[slow-1] and nums[slow-1] nums[fast]❓但是我们发现在代码中的判定条件只有nums[slow-2]和nums[fast]因为数组是有序的如果nums[slow-2] nums[fast]则证明nums[slow-1]也等于nums[fast]。如果nums[slow-2] ! nums[fast]则有两种情况nums[slow-1]等于或者不等于nums[fast]而这两种情况都是满足要求的。 所以我们补全代码 while fast len(nums): if nums[slow - 2] ! nums[fast]: nums[slow] nums[fast]slow slow 1fast fast 1当你刚写下nums[slow - 2]的时候就有疑问了要是初始设置slow0那这一步就该报错了。这说明我们初始的时候应该设置slow和fast都为2因为nums的前两个元素一定满足要求判断过程从第三个元素开始。 按照题目要求最后我们要返回新数组的长度我们看更新过程 nums[slow] nums[fast] slow slow 1首先slow被更新然后slow前进一步那么当最后一个元素被填入slow之后slow加一即比最后一个合理元素的索引大1也就是长度。最后直接返回slow。 class Solution(object):def removeDuplicates(self, nums)::type nums: List[int]:rtype: intif len(nums) 2:return len(nums)slow, fast 2, 2while fast len(nums):if nums[slow - 2] ! nums[fast]:nums[slow] nums[fast]slow slow 1fast fast 1return slow
http://www.huolong8.cn/news/20423/

相关文章:

  • wordpress用外部图片浙江企业seo推广
  • c2c网站有哪些网站建设与开发学什么内容呢
  • 佛山网站建设网络推广做关于植物的网站
  • 网站对于企业的作用公司网站建设多少费用哪儿济南兴田德润联系电话
  • 吉林新农村建设网站附近装修公司联系方式
  • 网站建设学习网公司有哪些住房和城乡建设部网站证书查询
  • 上海网站营销网络设计课程培训
  • 高端大气的网站制作申请域名建立网站
  • 建设与管理局网站设置网站的默认页面
  • 色一把做最好网站定制高端网站建设公司
  • 中英文网站如何建设济南做网络安全的公司
  • C 网站开发招聘邵阳棋牌软件开发
  • 富阳设计网站网页在线制作图片
  • 制作公司网站 优帮云上海网站建设怎么弄
  • asp网站生成泰安网站制作公司电话
  • 用网站做平台电商网站构建预算方案
  • 育才网站建设关于未备案网站
  • 网站被抄袭WordPress博客主题免费
  • 网站建设包括沈阳网络科技公司有哪些
  • 学网站开发的软件怎么免费弄网站
  • 江苏省建设厅网站公示重庆专业网站推广时间
  • 平顶山哪里做网站刚刚封城最新消息2021
  • 惠城区城乡规划建设局网站域名查询 阿里云
  • 门户网站的推广方案中国风网站建设
  • 浙江五联建设有限公司网站wordpress最新主题下载地址
  • 宁波网站建设开发门户网站建设参考文献
  • 免费公司网站制作如何成立网站
  • 北京市住房和城乡建设厅网站wordpress5.2.2怎么改中文
  • 仿58网站怎么做设备报价单模板
  • 哈尔滨网站建站模板简单学校网站模板免费下载