java有一有序数组,要求使用一次循环,在原数组中删除重复数据。 例如[1,1,1,2,2,3,3,3,4] 结果[1,2,3,4,0,0,0,0,0]
时间: 2023-09-22 21:05:50 浏览: 42
你可以使用双指针来解决这个问题。一个指针用于遍历原数组,另一个指针用于指向新数组中待填充的位置。首先,将第一个元素直接放入新数组中。然后从第二个元素开始,如果当前元素与前一个元素不相等,就将该元素放入新数组中,并更新指向新数组的指针。最后,将新数组中指针后面的位置都填充为0即可。
以下是使用Java实现的代码示例:
```java
public static void removeDuplicates(int[] nums) {
if (nums.length <= 1) {
return;
}
int newIndex = 1; // 指向新数组的指针
for (int i = 1; i < nums.length; i++) {
if (nums[i] != nums[i - 1]) {
nums[newIndex] = nums[i];
newIndex++;
}
}
// 将新数组指针后面的位置填充为0
while (newIndex < nums.length) {
nums[newIndex] = 0;
newIndex++;
}
}
```
使用以上代码,你可以将给定的有序数组中的重复元素删除,并在原数组中以0填充剩余位置。例如,对于输入数组 `[1, 1, 1, 2, 2, 3, 3, 3, 4]`,经过处理后,结果为 `[1, 2, 3, 4, 0, 0, 0, 0, 0]`。