原地算法(力扣)

在计算机科学中,一个原地算法(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;
    }
    }

猜你喜欢

转载自blog.csdn.net/qq_63852611/article/details/126320279