天天看點

java-删除排序數組中重複的項-雙指針算法-快慢指針

java-删除排序數組中重複的項-雙指針算法-快慢指針

什麼是雙指針算法呢

雙指針算法概念

因為這題給了限定 有序,O(1) 不能改變數組換成新的 是以用快慢指針就行

package suanfa.快慢指針;

import java.util.Arrays;
import java.util.List;

/**
 * 因為這題給了限定  有序,O(1) 不能改變數組換成新的  是以用快慢指針就行
 */
public class ZhiZhen {
    public static void main(String[] args) {
        System.out.println(DoubleZhen(new int[]{1,2,2,3,3,5,6,6}));

    }
    public static int DoubleZhen(int[] nums){
        if (nums.length==0){
            return 0;
        }
        //這裡定義j為快指針  讓他在下标為1的位置  i在下标wei0的位置  這樣同時開始
        int i=0;
        for (int j=1;j<nums.length;j++){
            if (nums[j]!=nums[i]){
                i++;
               nums[i]= nums[j];
            }

        }
        return i+1;//應為  i是下标  從0開始的  元素的個數要加1;
    }



}


           

這道題還是比較簡單的 練習别的雙指針 面試常考