zoukankan      html  css  js  c++  java
  • 删除数组中的重复元素,并返回去重的数组之Python解法

    题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
    解法:采用双指针,遍历数组,发现两个值相等,移动指针,发现两个值不相等,互换位置保证指针走过的地方都是不重复的数

    def handler(li):
        """双指针方法"""
        if not li or len(li) == 0:
            return 0
        i = 0
        res = [li[0]]
        for j in range(1, len(li)):
            if li[i] != li[j]:
                i += 1
                li[i] = li[j]
                res.append(li[i])
        return i+1,res
    
    
    def handler_01(li):
        """元素弹出法"""
        if not li or len(li) == 0:
            return 0
        i = 0
        j = 1
        while j <= len(li) -1:
            if li[i] == li[j]:
                li.pop(j)
            else:
                i += 1
                j += 1
        return len(li)
    
    
    if __name__ == '__main__':
        print('删除重复后列表长度及列表内容', handler([1,2,3,3,4,5]))
        print('删除重复后列表长度', handler_01([1,2,3,3,4,5]))

    结果展示:

    时刻记着自己要成为什么样的人!
  • 相关阅读:
    AngularJS7那些不得不说的事故
    Python和C++的混合编程(使用Boost编写Python的扩展包)
    为OPENCV添加freetype支持并显示中文字符(在mac上编译opencv及contrib库)
    OpenProject基础使用介绍
    负载均衡
    如何搭建wordpress ,wecenter
    nginx 模块
    Nginx
    http 协议
    ssh
  • 原文地址:https://www.cnblogs.com/demo-deng/p/14691353.html
Copyright © 2011-2022 走看看