题目:

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例 1:

给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。

示例 2:

给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。你不需要考虑数组中超出新长度后面的元素。

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {print(nums[i]);
}  

解法1:设置两个变量,Low和High,Low用来记录长度并且排序,High用来遍历整个列表

比较列表中High和Low的值的大小,当High与Low不相等时,Low加1,并且把High当前的时赋给Low+1.

然后High加取下一个值; 当列表中High与Low的值相等时,High取下一个值

以[1,1,2,3]为例,

列表  Low High 是否相等
[1,1,2,3] 0 0  是
[1,1,2,3] 0 1  是
[1,1,2,3] 0 2  否
[1,2,2,3] 1 3  否
[1,2,3,3] 2 3  循环结束

最后会输出列表内前三个

代码如下:

class Solution:def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""#设置两个指针,low记录非重复项,high依次遍历nums列表low = 0l = len(nums)#假如nums为空或者只有一个数字if l <= 1:return lelse:#依次从nums列表读取元素for high in range(l):#当low和high对应的值不相等时,low向前进一位,#并且把high当前所对应的值赋给前进一位后的low,以保证nums从0开始按顺序排列if nums[low] < nums[high]:low = low + 1nums[low] = nums[high]#low的值+1就是新的长度#leetcode会自己打出nums长度范围内的值return low + 1

从排序数组中删除重复项-Python-LeetCode相关推荐

  1. leetcode 从排序数组中删除重复项(C++)

    从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间 ...

  2. LeetCode题 - 26 删除排序数组中的重复项 python实现

    题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示 ...

  3. leetcode26 删除排序数组中的重复项 python

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...

  4. leetcode--删除排序数组中的重复项--python

    文章目录 题目 题目详情 示例 说明 解题代码 思路 代码 运行结果 最佳方案 题目 题目详情 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要 ...

  5. 从排序数组中删除重复项

    参考: https://blog.csdn.net/qitong111/article/details/79729639 https://blog.csdn.net/qq_25677349/artic ...

  6. 2019-03-09-算法-进化(从排序数组中删除重复项)

    题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. ...

  7. [LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项

    这道题我真的纠结好久,因为没注意那个原地的题目要求,所以很奇怪怎么我电脑运行成功,但是LeetCode上运行就是不对.气哭. 感谢群友lino的帮助.他试了set方法不行,直接喂给我的答案了... 题 ...

  8. LeetCode--80. 删除排序数组中的重复项Ⅱ(双指针,暴力)

    删除排序数组中的重复项Ⅱ(C,Python) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python实现 1. 题目描述 难度:中等 2. 题目分析 这道题是LeetCode–26. 删 ...

  9. LeetCode--26. 删除排序数组中的重复项(双指针,暴力)

    删除排序数组中的重复项(C, Python) 1. 题目描述 2. 题目分析 3. C语言实现 3.1 暴力求解法 3.2 双指针法 4. Python语言实现 1. 题目描述 难度:简单 2. 题目 ...

最新文章

  1. 揭秘PHP深受Web开发者喜爱的原因
  2. [转] JSON转换
  3. 数组之间的计算matlab,MATLAB软件数组的运算
  4. invalid argument 0: Sizes of tensors must match except in dimension 0. Got 1
  5. leetcode 46 全排列
  6. PHP调试环境搭建的一些常见问题
  7. Vue页面手动刷新,导航栏激活项还原到初始状态问题解决方案
  8. python输入字符串str_python字符串(str)
  9. windows离线安装grunt_chrome火狐离线安装包下载
  10. bzoj 4017: 小Q的无敌异或(线段树)
  11. MySQL游标循环取出空值的BUG
  12. Angular CLI 生成项目时css less scss样式使用说明
  13. android 仿qq it蓝豹,十大Android开源项目-IT蓝豹
  14. python混合线性模型_Python中的多元线性混合效应模型
  15. 2021年安全员-C证(山东省-2020版)考试及安全员-C证(山东省-2020版)模拟试题
  16. (十三)【数电】(半导体存储电路)同步(电平)触发器|边沿触发的触发器
  17. php获取当前进程的id
  18. 2023年最新微信小程序获取用户openid、头像昵称的填写能力和方法原生写法
  19. 来把三子棋吗?创建属于你的三子棋。
  20. NOIP2003 侦探推理

热门文章

  1. 这篇 python 文章,是过去你错过的 python 细节知识点,滚雪球第4季第15篇
  2. 破解网页禁用鼠标右键方法
  3. 如何让jar包显示Java图标
  4. 前端绘制小猪佩奇(CSS)
  5. 【WPS表格】数据透视表的一些笔记整理
  6. OSChina 周一乱弹 ——这个公主都没一旁的汪可爱
  7. 中投民生:“巨无霸”上市估值2000亿美金直接超越茅台
  8. ACM计算几何专项练习题目总结
  9. JS逐页转pdf文件为图片格式
  10. 【传感器大赏】3轴磁场传感器