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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
python有证书的加密解密实现方法
Nov 19 Python
结合Python的SimpleHTTPServer源码来解析socket通信
Jun 27 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
python ---lambda匿名函数介绍
Mar 13 Python
Python3安装pip工具的详细步骤
Oct 14 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
keras中的History对象用法
Jun 19 Python
python - timeit 时间模块
Apr 06 Python
Python使用Kubernetes API访问集群
May 30 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
php插入排序法实现数组排序实例
2015/02/16 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
Python编写单元测试代码实例
2020/09/10 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
python中count函数知识点浅析
2020/12/17 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
党员倡议书
2015/01/19 职场文书