leetcode——26.删除排序数组中的重复项

双指针:

class Solution:
    def removeDuplicates(self, nums) -> int:
        if len(nums)<2:
            return len(nums)
        i,j=0,1
        while j<len(nums):
            if nums[i]==nums[j]:
                nums.pop(j)
            else:
                i,j=i+1,j+1
        return len(nums)

 执行用时116ms。

执行用时48ms的别人的做法:

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums: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

多妙啊,但是我就是想不到。。。。

                                                                                                               ——2019.10.8

 


 

 

public int removeDuplicates(int[] nums) {
        //双指针
        int len = nums.length;
        if(len == 0){
            return 0;
        }else if(len == 1){
            return 1;
        }
        int i = 1,j = 1;
        while(i<len){
            if(nums[i]<= nums[j-1]){
                i++;
            }else if(nums[i]>nums[j-1]) {
                nums[j] = nums[i];
                i++;
                j++;
            }
        }
        return j;
    }

 

 ——2020.7.8

posted @ 2019-10-08 16:30  欣姐姐  阅读(166)  评论(0编辑  收藏  举报