什么是双指针算法呢
双指针算法概念
因为这题给了限定 有序,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;
}
}
这道题还是比较简单的 练习别的双指针 面试常考