自学内容网 自学内容网

leetcode26-Remove Duplicates from Sorted Array

这道题目一开始的思路是用了map的方式,并且是有序的map用来保证元素是有序且唯一的,然后map的size就是个数,跑下来发现时间复杂度非常的高,所以一定有更简单的办法。其实数组的考点无非就是遍历,遍历的方式要么就是普通遍历要么就是快慢指针的方式,我们可以用一个慢指针始终指向 元素只出现一次的数组的最新下标,快指针就正常遍历,当快指针对应的元素比慢指针对应的元素大的时候需要把快指针指向的元素赋值到慢指针的位置,最终慢指针所在的索引就是最终的个数

public class removeDuplicatesFromSortedArray {
public static void main(String[] args) {
int arr[] = {0,0,1,1,1,2,2,3,3,4};
int len = getCnt(arr);
System.out.println(len);
for(int i = 0;i<len;i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static int getCnt(int[] arr) {
int j = 0;
for(int i = 0;i<arr.length;i++) {
if(j<1||arr[i] > arr[j-1]) {
arr[j++] = arr[i];
}
}
return j;
}
}

原文地址:https://blog.csdn.net/wellwang1993/article/details/136997119

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!