做网站哪家好 青岛,企业展厅设计专业品牌,百度seo公司一路火,福清营销型网站建设方案题目
给定一个有序数组#xff0c;要求删除数组中的重复元素#xff0c;不允许创建新数组#xff0c;返回删除重复元素后的数组长度。
原理
定义一个快指针 j 和一个慢指针 i#xff0c;慢指针从下标0开始#xff0c;快指针从下标1开始#xff0c;遍历数组。如果两个下…题目
给定一个有序数组要求删除数组中的重复元素不允许创建新数组返回删除重复元素后的数组长度。
原理
定义一个快指针 j 和一个慢指针 i慢指针从下标0开始快指针从下标1开始遍历数组。如果两个下标对应的数不相等 则后移 i并将j的元素赋值到 i然后后移 j。如果相等则只后移 j。 这样等 j 遍历完数组后不重复的元素正好排到 i 的位置。由于题目要求返回长度所以返回 i1 即可。
代码 public static void main(String[] args) {int[] arr new int[]{0, 1, 2, 2, 3, 3, 4};int result duplicateDrop(arr);System.out.println(result);}private static int duplicateDrop(int[] arr) {if (arr.length 1) {return arr.length;}int i 0;for (int j 1; j arr.length; j) {if (arr[j] ! arr[i]) {i;arr[i] arr[j];}}return i 1;}