26. Remove Duplicates from Sorted Array

题目链接

 

 思路一:单指针法,遍历数组,遇到和下一个元素不同的把这个元素按顺序保存到数组的前面,用指针记录保存的个数,注意数组只有一个元素和遍历到最后俩元素的特殊情况。

复制代码
class Solution:
    def removeDuplicates(self,nums):
        sum = 0
        if len(nums) <= 1:
            return 1
        for i in range(len(nums)-1):
            if i == (len(nums)-2):
                if nums[i] != nums[i+1]:
                    nums[sum] = nums[i]
                    nums[sum+1] = nums[i+1]
                    sum +=2

                else:
                    nums[sum] = nums[i]
                    sum +=1
            else:
                if nums[i] != nums[i+1]:
                    nums[sum] = nums[i]
                    sum +=1
        nums = nums[:sum]
        return sum
if __name__ == '__main__':#提交时main函数内容不用带上
    nums = [1]
    solution = Solution()
    print(solution.removeDuplicates(nums))
复制代码

思路二,双指针和思路一大同小异

复制代码
 1 class Solution:
 2     def removeDuplicates(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: int
 6         """
 7         if len(nums) <= 1:
 8             return len(nums)
 9         i = 0
10         j = 1
11         while (j < len(nums)):
12             if nums[i] == nums[j]:
13                 nums.pop(j)
14             else:
15                 j = j + 1
16                 i = j - 1
17         return len(nums)
复制代码

 思路三:使用set,但是貌似开辟空间了,但是在力扣也通过了

1 class Solution:
2     def removeDuplicates(self, nums):
3         nus = list(set(nums))#得到一个无序的无重复数字的list
4         nus = sorted(nus)
5         for i in range(len(nus)):
6             nums[i] = nus[i]
7         return len(nums[:len(nus)])

 

posted @   你的雷哥  阅读(199)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示