本题难度:
简单
本题思路:
题目所给的是一个非严格递增排列的数组,即相同数据是在一起的,这就让问题很简单了,可以设置一个哨兵时刻记录有效位,并用一个工作指针遍历整个数组,遇到不重复的数组元素就移动其到有效位,同时更新有效位。最终得到的有效位加1就是去重后的数组长度。
本题代码:
class Solution {
public int removeDuplicates(int[] nums) {
int significanceBit = 0;
for(int i = 1; i < nums.length; i++){
if(nums[i] != nums[significanceBit]){
significanceBit++;
nums[significanceBit] = nums[i];
}
}
return significanceBit + 1;
}
}
本题复杂度:
时间复杂度T(n)=O(n)
空间复杂度S(n)=O(1)