LeetCode专题-Python实现之第26题:Remove Duplicates from Sorted Array
相关代码已经上传到github:https://github.com/exploitht/leetcode-python
文中代码为了不动官网提供的初始几行代码内容,有一些不规范的地方,比如函数名大小写问题等等;更合理的代码实现参考我的github repo
1、读题
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
For example,
Given input array 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 the new length.
一个有序数字,要求去掉重复的元素然后返回新的长度,不要申请额外空间。
举个例子,给定数组:[1,1,2],程序需要处理成[1,2,…]然后返回2,也就是前2个元素是去重之后得到的结果,超过2的部分是什么无所谓,是1也行是2也行。
2、解题
这类题想明白了其实解题很简单,重复的需要去掉,无非就是遍历数组,发现重复,就把后面的往前移,把重复值覆盖掉。具体说,可以维护2个指针,慢指针开始指向数组第一个元素,快指针指向第二个元素,然后快指针不断判断自己当前元素和前一个元素是否相同,相同则快指针后移,不相同则将当前值赋值给慢指针的后一个元素,慢指针后移。最后慢指针指向的元素及前面所有元素都是不重复的。具体过程参考如下代码和注释:
class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        # 删除列表中的重复项,返回操作后的长度
        # [1,1,1,2,3,4,4,4,5] -> [1,2,3,4,5] 5
        # 维护2个索引,慢的s,快的f;s指向第一个元素,f的指向第二个元素;
        # 判断f和f前一个元素是否相等,相等则f后移;不等则s后移一个,值给s,然后f也后移
        if len(nums) <= 1:
            return len(nums)
        s = 0
        for f in range(1, len(nums)):
            if nums[s] != nums[f]:
                s += 1
                nums[s] = nums[f]
        return s + 1
												
											LeetCode专题-Python实现之第26题:Remove Duplicates from Sorted Array的更多相关文章
- leetcode第26题--Remove Duplicates from Sorted Array
		
problem: Given a sorted array, remove the duplicates in place such that each element appear only onc ...
 - [LC]26题 Remove Duplicates from Sorted Array (删除排序数组中的重复项)(双指针法)(原地实现)
		
①中文题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
 - 【26】Remove Duplicates from Sorted Array
		
[26]Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such th ...
 - Leetcode 题目整理-6 Swap Nodes in Pairs  & Remove Duplicates from Sorted Array
		
24. Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For ...
 - LeetCode专题-Python实现之第21题:Merge Two Sorted Lists
		
导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...
 - 【LeetCode算法-26】Remove Duplicates from Sorted Array
		
LeetCode第26题 Given a sorted array nums, remove the duplicates in-place such that each element appear ...
 - LeetCode(26)题解:Remove Duplicates from Sorted Array
		
https://leetcode.com/problems/remove-duplicates-from-sorted-array/ Given a sorted array, remove the ...
 - [算法题] Remove Duplicates from Sorted Array ii
		
题目内容 本题来源LeetCode Follow up for "Remove Duplicates": What if duplicates are allowed at mos ...
 - [算法题] Remove Duplicates from Sorted Array
		
题目内容 本题来源于LeetCode Given a sorted array, remove the duplicates in place such that each element appea ...
 
随机推荐
- Linux Kernel C语言编程范式
			
介绍 不同的编程语言具有不同的抽象原语(如下),有的原语抽象层次低,有的原语抽象层次高.其中函数式.DSL是这几年十分热门的编程语言概念. 过程式抽象原语:变量 对象式抽象原语:对象 函数式抽象原语: ...
 - 【安全性测试】drozer中关于AttackSurface的一些理解
			
在推荐扫描Android APP的工具中,扫描组件可以推荐drozer.使用过drozer的使用者知道,如何查找各个组件上的攻击层面 run app.package.AttackSurface . 它 ...
 - PowerApp Document
			
https://docs.microsoft.com/en-us/powerapps/ PowerApp Document: https://docs.microsoft.com/en-us/powe ...
 - Cordova/Ionic Android 开发环境搭建 - Windows系统
			
电脑操作系统 - windows 10 IDE - WebStorm 2019 Node v10.15.3 npm v6.4.1 Ionic v3 Angula v5 Cordova 移动设备 ...
 - 关于css中为什么要设置html和body的高度?
			
1.在怪异模式下,也就是网页的头部不写DOCTYPE的时候,body作为根元素,设置高度为百分百的时候.可以是页面的高度和浏览高度相同,在标准模式下也就是有DOCTYPE的时候,html才是根元素这时 ...
 - HTML块元素,行内元素,类,头部元素
			
总结HTML块元素,行内元素,类,头部元素 块元素: 在HTML中,块级元素的高度为其内容的高度,宽度会扩展到与父容器同宽.默认情况下,块级元素会独占一行,并且元素前后行留空. 示例:<h1&g ...
 - Docker的基本概念
			
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
 - Java实现堆排序和计数排序
			
堆排序代码: 思想:每次都取堆顶的元素,将其放在序列最后面,然后将剩余的元素重新调整为最小堆,依次类推,最终得到排序的序列. import java.util.Arrays; /** * 思路:首先要 ...
 - JavaScript基础系列
			
JavaScript基础系列 JavaScript是一种基于对象和事件驱动的客户端脚本语言. JavaScript的注释 // 单行 /**/ 多行注释 JavaScript变量,函数名和操作符都是区 ...
 - [Swift]LeetCode154. 寻找旋转排序数组中的最小值 II | Find Minimum in Rotated Sorted Array II
			
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...