在Java中实现删除有序数组中的重复项,你可以使用双指针的方法。具体步骤如下:
首先,判断数组的长度是否为0或者1,如果是,则无需删除重复项,直接返回即可。
定义两个指针:一个指针用于遍历原始数组,另一个指针用于记录不重复元素的位置。
使用一个循环遍历整个数组。初始时,将第一个元素作为不重复元素,因此将第二个指针起始值设为1。
在遍历的过程中,不断比较当前元素和前一个元素是否相同。如果相同,则表示出现重复,继续遍历。
如果当前元素和前一个元素不相同,则表示遇到了不重复的元素。将该元素复制到数组中当前不重复的位置,并更新不重复元素的位置指针。
最后,返回不重复元素的个数作为结果,即可得到删除重复项后的数组长度。
下面是一个简单的实例:
public class Main {
public static void main(String[] args) {
int[] nums = {1, 1, 2, 3, 3, 3, 4, 5, 5};
int length = removeDuplicates(nums);
System.out.print("删除重复项后的数组为:");
for (int i = 0; i < length; i++) {
System.out.print(nums[i] + " ");
}
}
public static int removeDuplicates(int[] nums) {
//判断数组的长度是否为0或者1,如果是,则无需删除重复项,直接返回即可。
if (nums.length == 0 || nums.length == 1) {
return nums.length;
}
//定义两个指针:一个指针用于遍历原始数组,另一个指针用于记录不重复元素的位置。使用一个循环遍历整个数组。初始时,将第一个元素作为不重复元素,因此将第二个指针起始值设为1。
int uniquePos = 1;
for (int i = 1; i < nums.length; i++) {
if (nums[i] != nums[i - 1]) {
nums[uniquePos] = nums[i];
uniquePos++;
}
}
return uniquePos;
}
}