Python实现删除排序数组中重复项的两种方法示例


Posted in Python onJanuary 31, 2019

本文实例讲述了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/

Python 相关文章推荐
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
详解python开发环境搭建
Dec 16 Python
对python生成业务报表的实例详解
Feb 03 Python
详解python做UI界面的方法
Feb 27 Python
Python地图绘制实操详解
Mar 04 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
python中for in的用法详解
Apr 17 Python
Python-for循环的内部机制
Jun 12 Python
Python偏函数实现原理及应用
Nov 20 Python
python 实现有道翻译功能
Feb 26 Python
python重试装饰器的简单实现方法
Jan 31 #Python
Python实现合并两个有序链表的方法示例
Jan 31 #Python
Django 日志配置按日期滚动的方法
Jan 31 #Python
Python类的继承用法示例
Jan 31 #Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 #Python
python3使用QQ邮箱发送邮件
May 20 #Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 #Python
You might like
PHP 读取文件的正确方法
2009/04/29 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
php封装的smarty类完整实例
2016/10/19 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
python网络编程学习笔记(一)
2014/06/09 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
个人自我评价和职业目标
2014/01/24 职场文书
小学生学习感言
2014/03/10 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
品酒会策划方案
2014/05/26 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
前台岗位职责范本
2015/04/16 职场文书
教师节班会主持词
2015/07/06 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
python三子棋游戏
2022/05/04 Python