26. Remove Duplicates from Sorted Array
给定一个有序的数组nums,删除重复内容,使每个元素只出现一次并返回新的长度。
不要为其他数组分配额外空间,您必须通过在O(1)额外内存中就地修改输入数组来实现此目的。
思路:数组有序,重复数组必定相邻!
其它和27是一样的。
JAVA 13ms
class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length <= 1) return nums.length;
int count = 0;
for(int i = 1; i<nums.length; i++){
if(nums[count] != nums[i]){
nums[++count] = nums[i];
}
}
return count+1;
}
}
Python 103 ms
a[::-1]用法:翻转list
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if(len(nums)<=1):
return len(nums)
for i in range(1, len(nums))[::-1]:#倒序,删除才不会影响
if(nums[i] == nums[i-1]):
del nums[i]
return len(nums)
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
pre = None
i = 0
for num in nums:
if (pre == None or num != pre):
nums[i] = num
pre = num
i += 1
return i