本文实例讲述了Python实现删除排序数组中重复项的两种方法。分享给大家供大家参考,具体如下:

对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度

注意:不能为新数组申请额外的空间,只允许申请O(1)的额外空间修改输入数组

Example 1:

Given nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.

It doesn't matter what you leave beyond

Example 2:

Given nums = [0,0,1,1,1,2,2,3,3,4],Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.

It doesn't matter what values are set beyond the returned length.

说明:为什么返回列表长度而不用返回列表?因为列表传入函数是以引用的方式传递的,函数中对列表进行的修改会被保留。

// nums is passed in by reference. (i.e., without making a copy)

int len = removeDuplicates(nums);

// any modification to nums in your function would be known by the caller.

// using the length returned by your function, it prints the first len elements.

for (int i = 0; i < len; i++) {

print(nums[i]);

}

1. 简单判断列表中元素是否相等,相等就删除多余元素

def removeDuplicates(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

if not nums:

return 0

if len(nums)==1: #单独判断列表长度为1的情况,因为之后的for循环从下标1开始

return 1

temp_num = nums[0]

count =0 #for循环中动态删除列表元素,列表缩短,为了防止下标溢出需要用count标记删除元素个数

for index, num in enumerate(nums[1:]):

if temp_num == num: #元素相等就删除

del nums[index-count]

count += 1

else:

temp_num = num

return len(nums)

def removeDuplicates(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

forth = 0

back = 1

while back <= len(nums)-1:

if nums[forth] == nums[back]:

nums.pop(back)

else:

forth += 1

back += 1

return len(nums)

2. 修改数组,保证数组的前几个数字互不相同,且这几个数字的长度同返回长度相等

def removeDuplicates(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

if not nums:

return 0

length = 0 #不存在重复数字的数组长度

for index in range(1,len(nums)): #遍历数组

if nums[index] != nums[length]:

length += 1

nums[length] = nums[index]

return length+1

算法题来自:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/

PS:本站还有两款比较简单实用的在线文本去重复工具,推荐给大家使用:

希望本文所述对大家Python程序设计有所帮助。

python去重复排序_Python实现删除排序数组中重复项的两种方法示例相关推荐

  1. python右对齐格式化输出_Python中格式化输出的两种方法介绍

    本篇文章给大家带来的内容是关于Python中格式化输出的两种方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 方式一:使用占位符 % 常用占位符:% s (s = string ...

  2. python字典取值_python 字典中取值的两种方法小结

    python 字典中取值的两种方法小结 如下所示: a={'name':'tony','sex':'male'} 获得name的值的方式有两种 print a['name'],type(a['name ...

  3. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  4. 站长在线Python精讲:在Python中格式化字符串的两种方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...

  5. python生成100个随机数_Python_0——100闭区间产生3个随机数,两种方法排序

    ''' 题目:0--100闭区间产生3个随机数,两种方法排序 法1:暴力遍历 法2:max(a,b,c)min(a,b,c) 注意:random,radint(0--100)产生随机数 '''impo ...

  6. python读取二维数组的行列数_Python获取二维数组的行列数的2种方法

    Python获取二维数组的行列数的2种方法 这篇文章主要介绍了Python获取二维数组的行列数的2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 ...

  7. java去重复元素并打印_Java打印数组中重复元素

    Java打印数组中重复元素 1 说明 在此程序中,我们需要打印数组中存在的重复元素.这可以通过两个循环来完成.第一个循环将选择一个元素,第二个循环将通过将所选元素与其他元素进行比较来遍历整个数组.如果 ...

  8. angularjs 元素重复指定次数_[LeetCode] 442. 数组中重复的数据

    [LeetCode] 442. 数组中重复的数据 题目链接: https://leetcode-cn.com/problems/find-all-duplicates-in-an-array 难度:中 ...

  9. java如何找重复数字_Java如何找出数组中重复的数字

    题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...

最新文章

  1. 微信小程序提示 出现脚本错误或者未正确调用 Page()
  2. 后端开发工程师的DIV+CSS两栏布局入门
  3. 如何忽略word的单词检错功能
  4. [py2neo]Ubuntu14 安装py2neo失败问题解决
  5. Gruntjs: grunt-contrib-jst
  6. 【Python】绘制哆啦A梦
  7. mysql-fron快速写sql语句,SQL优化系列:如何书写高质量SQL语句(一)
  8. 七年前的电脑可以用python_1年前的小五都用 Python 来做什么?
  9. 吉他扒谱该怎么做?分享一款超好用的扒谱工具!
  10. c 导出html表格数据格式文件,将html网页导出excel表格数据/如何将html页面中的表格导出到excel表格...
  11. UG NX10 NX12 用曲线方程式绘制实体模型的方法
  12. SI4463的数据冲撞解决办法【转】
  13. python从入门到入土图片_python学习手册-爬爬那些年咱没见过的校花图片
  14. Android4.1 新功能 新特性
  15. 一对一直播源码,实现一个简单的登录界面
  16. 大牛博士是如何进行文献检索和阅读的
  17. sed删除空行、换行符的方法 (包括空格、特殊字符、tab等组成的空行) vim删除^M
  18. dell服务器维修过程
  19. 97-things-every-programmer-should-know-1: 谨慎行事
  20. 简约实用的epub阅读器

热门文章

  1. 嵌入式linux寄存器位运算,嵌入式linux C语言(一)――位运算的使用
  2. 计算机跳转列表常用组合框,2015计算机二级VB考点复习指导:列表框和组合框
  3. sql判断时间大于0点_Java秒杀系统实战系列-数据库级别Sql的优化与代码的调整
  4. python对于文件的读取和重建
  5. Redis教程:数据对象分析(二)
  6. java代码删除本地文件_java程序实现删除本地文件
  7. mysql执行计划id相同_MySQL|MySQL执行计划
  8. Android Gradle Task-中文
  9. UVA12169模运算
  10. Java中的生产消费者问题