在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转换资料的算法。当算法执行时,输入的资料通常会被要输出的部分覆盖掉。不是原地算法有时候称为非原地(not-in-place)或不得其所(out-of-place)。
在计算复杂性理论中,原地算法包含使用O(1)空间复杂度的所有算法,DSPACE(1)类型。这个类型是非常有限的;它与正规语言1相等。
定义双指针
数值同,慢指针停,快指针前进
前进时遇双指针数值不同,将快指针所指位置覆盖至当前慢指针位置
class Solution {
public int removeDuplicates(int[] nums) {
int i=0;
for(int j = 1;j < nums.length;j++){
if(nums[j] != nums[i]){
i++;
nums[i] = nums[j];
}
} return i+1;
}
}
class Solution {
public int removeDuplicates(int[] nums) {
int index = 1;
for(int re : nums){
if(re != nums[index - 1])
nums[index++] = re;
}
return index;
}
}