前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|“双指针法”解删除数组重复项问题

Python|“双指针法”解删除数组重复项问题

作者头像
算法与编程之美
发布2020-04-01 10:47:35
8290
发布2020-04-01 10:47:35
举报

问题描述

Python算法题目中,掌握一定的方法和技巧或者说是了解基础解题规律,能够在解决更多复杂问题的过程中思路更清晰,算法更简单易懂。接下来用一个leetcode题目“原地删除排序数组重复项”的案例来介绍一下“双指针法”的具体应用。

题目描述:

给定一个排序数组,需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后新的数组。

输入:[1,1,2]

输出:[1,2]

解决方案

1.首先需要引入两个指针i,k;

2.指针i先用于遍历数组,由于要删除相同数字,需要判断是否与上一个数字相同,当遇到nums[i] != nums[i-1]时,说明已遇到新的不同数字,此时,将该数字记录;

3.指针k有两个不同的作用。

一是用来统计这个数组中不同数字的数量,即每当遇到新的数字时,就执行k +=1 ;

二是为了记录这个新的数字,将指针i遍历而遇到的新的数字的索引赋值给k,即nums[k] = nums[i]。

4.最终得到的k就是返回值。

代码示例:

class Solution:
    def removeDuplicates(self,  nums: [int]) -> int:
        if len(nums)  == 0: return 0
        k =  1
        for  i in range(1, len(nums)):
             if nums[i] != nums[i - 1]:
                 nums[k] = nums[i]
                 k += 1
         return k 

结语

通过这道题目,可以了解到在解决原地删除问题时,遇到这种有序依次排列的数组,用遍历来做十分方便,而遍历数组,就联想到可以用双指针法来解决。两个指针,一个用来遍历判断,一个用来记录数据,十分容易就能得到结果。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档