自己做出来效果并不是很好:
class Solution: def removeDuplicates(self, nums) -> int: i=0 while i<len(nums)-2: j,k=i+1,i+2 if nums[i]==nums[j]: if nums[j]==nums[k]: nums.pop(k) else: i,j=i+2,j+2 else: i,j=i+1,j+1 return len(nums)
执行用时 :104 ms, 在所有 Python3 提交中击败了23.37%的用户
内存消耗 :13.9 MB, 在所有 Python3 提交中击败了5.08%的用户
看看人家执行用时40ms的例子:
class Solution: def removeDuplicates(self, nums: List[int]) -> int: c=1 n=len(nums) if n<=2: return n for i in range (2,n): if nums[i]!=nums[c-1]: c=c+1 nums[c]=nums[i] return c+1
——2019.10.8
代码略长,但是扩展性应该好一点,效果还好。
public int removeDuplicates(int[] nums) { //最多出现两次,删除重复项,返回新的数组长度 //还是应该采用双指针进行遍历 //使用一个Int变量来控制次数不超过2 //使用一个int变量来记录字符串的有效长度 int len = nums.length; if(len<3){ return len; } int count = 1; int length = 1; int i = 1; int j = 1; while(i<len){ //i用来对原始数组进行遍历 这里的nums是长度至少为3的情况、 if(nums[i] == nums[i-1]){ if(count < 2){ nums[j] = nums[i]; i++; count ++ ; length ++ ; j ++ ; }else{ //如何删除重复项 i++; } }else{ nums[j] = nums[i]; j++; count = 1; i++; length++; } } for(int k = 0;k<length;k++){ System.out.println(nums[k]); } return length; }
——2020.7.8