天天看点

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;
    }



}


           

这道题还是比较简单的 练习别的双指针 面试常考