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

浦口区网站建设经验丰富东莞营销网站建设服务

浦口区网站建设经验丰富,东莞营销网站建设服务,家电设计公司,百度站长平台网站改版工具LeetCode详解系列的总目录(持续更新中): LeetCode详解之如何一步步优化到最佳解法:前100题目录(更新中...)-CSDN博客 LeetCode详解系列的上一题链接: LeetCode详解之如何一步步优化到最佳解法…

  LeetCode详解系列的总目录(持续更新中):

LeetCode详解之如何一步步优化到最佳解法:前100题目录(更新中...)-CSDN博客

LeetCode详解系列的上一题链接:

LeetCode详解之如何一步步优化到最佳解法:21. 合并两个有序链表-CSDN博客

 

目录

LeetCode详解系列的上一题链接:

26. 删除有序数组中的重复项

解法1:暴力解法

解法1思路:

代码:

 解法性能:

优化思路:

解法2:最终版

代码:

解法性能:

解法分析:


26. 删除有序数组中的重复项

本题题目链接:26. 删除有序数组中的重复项 - 力扣(LeetCode)

解法1:暴力解法

解法1思路:

根据题目的要求,即,将输入的数组中的所有的元素进行去重,并将去重后的元素按照递增的顺序(因为已经没有重复的元素了,所以前面的这些元素不存在“非严格递增排列”)存到输入数组的开头。

那么,这涉及到三个指针,第一个指针指向当前可能重复的元素最终应该放的位置;第二个指针指向一串连续相同元素的第一个位置;第三个指针指向一串连续相同元素的最后一个位置。

然后,就是遍历输入数组,停止的条件是第三个指针指向了数组之后。接着,要不断找到“一串连续相同元素”的起止位置,因此也用while循环来寻找,找到后,第二个指针指向的元素存到第一个指针指向的位置,第一个指针向后移一位,第二个指针指向第三个指针的位置,进行下一轮的查找。

最终的输出结果为第一个指针指向的索引值。

对应的代码如下所示:

代码:

class Solution:def removeDuplicates(self, nums: List[int]) -> int:pt_s, pt_m, pt_e = 0, 0, 0length = len(nums)while pt_e < length:while pt_e < length and nums[pt_m] == nums[pt_e]:pt_e += 1nums[pt_s] = nums[pt_m]pt_s += 1pt_m = pt_ereturn pt_s

 

 解法性能:

优化思路:

其实,第二个和第三个指针是想要找到一个界限,这个界限的左边元素和右边元素不一样,即,nums[pt_e-1] ≠ nums[pt_e]。那么,我们第二个指针和第三个指针其实只需要一个指针即可。此外,因为我们需要找的是一个界限(nums[pt_e-1] ≠ nums[pt_e]),我们调整一下代码的结构,把“pt_e += 1”放到外部的while循环中,当遇到界限的时候,进行两个指针的赋值操作。

然后,剩下的两个指针中,第二个指针要从索引为1开始。

在优化完这些后,代码如下所示:

解法2:最终版

代码:

class Solution:def removeDuplicates(self, nums: List[int]) -> int:if len(nums) == 1:return 1pt_s, pt_e = 1, 1length = len(nums)while pt_e < length:if nums[pt_e-1] != nums[pt_e]:nums[pt_s] = nums[pt_e]pt_s += 1pt_e += 1return pt_s

 

解法性能:

解法分析:

在优化后,因为需要的变量减少,以及代码数量减少,占用的内存变少。

此外,因为减少了赋值的操作,所以用时也减少了。

 

http://www.dtcms.com/wzjs/805744.html

相关文章:

  • 飞言情做最好的小说网站电子商务网站的设计工具
  • 新余网站建设公司三水做网站
  • 建设网站商城需要多少费用吗如何查看网站备案信息吗
  • 电子商务网站建设规划书的内容上海关键词优化推荐
  • 简述网站开发设计流程图做办公家具在哪个网站推销好
  • 临沂制作网站多少钱网页设计好看的网站
  • 技术支持海安网站建设win wordpress
  • 北京网站制作建设公司哪家好建网站软件工具
  • 免费制作网站的基本流程哮喘病应该怎样治除根
  • 网站建设的公司名称wordpress python插件
  • 用django怎么做网站网络设计一般包括
  • 网站如何做中英文效果网站建设预期效果
  • 做创意美食的视频网站有哪些网站图片怎么做超链接
  • wordpress自媒体主题苏州seo排名优化费用
  • 公司请外包做的网站怎么维护网站项目设计与制作
  • 怎样维护网站建设新网站怎么做友情链接
  • 论mvc框架在网站开发的应用软件开发公司账务处理
  • 长沙交互网站设计服务商杭州知名设计公司
  • 网站编程培训学校有哪些互联网舆情监测中心待遇
  • 网站建设公司外链怎么做建设部网站有建筑施工分包
  • 网站直播怎么做网站开发的基本语言
  • 推广网站建设二个字最吉利最旺财的公司名
  • 报表网站建设注册网站在哪里注册
  • 怎么为网站做外链江苏大才建设集团网站
  • 2w网站建设模式广告设计公司清晨必发图片
  • 网站建设域名怎么选择双峰做网站
  • 建设银行郑州市自贸区分行网站灰色行业推广平台网站
  • 北京建网站开发广州建设工程质量安全网站
  • 1对1视频wordpress seo 优化插件
  • 天津做网站哪家好天津平台网站建设哪家好