本文共 858 字,大约阅读时间需要 2 分钟。
要解决问题,我们需要在给定已经排序的数组中删除重复元素,并返回新的长度。以下是问题的详细分析和解决方案:
nums
,我们需要确保每个元素只出现一次,同时保持数组的有序性。我们将使用两个指针来解决问题:
pre
记录处理过的元素,避免重复。pre
的元素时,将其赋值给当前结果位置,并更新 pre
和索引。public class Solution { public int removeDuplicates(int[] nums) { if (nums == null || nums.length == 0) return 0; int pre = nums[0]; int index = 1; for (int k = 1; k < nums.length; k++) { if (nums[k] != pre) { nums[index++] = nums[k]; pre = nums[k]; } } return index; }}
pre
记录第一个元素,index
记录结果数组的位置从1开始。pre
不同,则将其赋值给当前结果位置,并更新 pre
。index
,表示处理后的新长度。这种方法在 O(n) 时间复杂度内完成任务,且在 O(1) 内外存,因此是高效且节省内存的。
转载地址:http://wfozk.baihongyu.com/