Posted onEdited onInLeetCodeDisqus: Symbols count in article: 1.7kReading time ≈2 mins.
O(n) time
1 2 3 4 5 6 7 8
classSolution: defremoveDuplicates(self, nums: List[int]) -> int: i = 0 for x in nums: if nums[i] != x: i += 1 nums[i] = x return i + 1
1 2 3 4 5 6 7 8 9 10 11 12 13
classSolution { public: intremoveDuplicates(vector<int>& nums){ if (empty(nums)) return0; int i = 0; for (int x : nums) { if (nums[i] != x) { nums[++i] = x; } } return i + 1; } };
用这个
1 2 3 4 5 6 7 8
classSolution: defremoveDuplicates(self, nums: List[int]) -> int: i = 0 for x in nums: if i < 1or nums[i - 1] < x: nums[i] = x i += 1 return i
1 2 3 4 5 6 7 8 9 10 11 12
classSolution { public: intremoveDuplicates(vector<int>& nums){ int i = 0; for (int x : nums) { if (i < 1 || x > nums[i - 1]) { nums[i++] = x; } } return i; } };
classSolution { public: intremoveDuplicates(vector<int>& nums){ if (nums.empty()) return0; int n = nums.size(); int last = 0; for (int i = 0; i < n; ++i) { if (nums[last] != nums[i]) { nums[++last] = nums[i]; // 先加加再写就可以了 } } return last + 1; // 因为last是下标,所以要返回last + 1才是个数 } };