📅  最后修改于: 2023-12-03 14:43:03.565000             🧑  作者: Mango
在Java中,将所有零移动到数组末尾是一个常见的问题,本篇文章将介绍一种简单而高效的解决方法。
假设我们有一个整型数组,我们需要将其中所有的零移动到数组的末尾。例如,对于数组[1, 0, 3, 0, 5]
,应该得到[1, 3, 5, 0, 0]
。
一种简单的方法是使用两个指针,一个指向当前非零元素的位置,另一个指向当前零元素的位置。我们从头遍历数组,当遇到一个非零元素时,将其复制到第一个指针所指向的位置,同时将第一个指针向后移动一位;当遇到一个零元素时,只将第二个指针向后移动一位。当遍历结束后,我们将第一个指针所在位置之后的元素全部赋为零即可。
以下是Java实现代码:
public static void moveZeros(int[] nums) {
int pos = 0;
for (int num : nums) {
if (num != 0) {
nums[pos++] = num;
}
}
while (pos < nums.length) {
nums[pos++] = 0;
}
}
下面是一个将所有零移动到数组末尾的示例:
int[] nums = new int[]{1, 0, 3, 0, 5};
moveZeros(nums);
System.out.println(Arrays.toString(nums)); // [1, 3, 5, 0, 0]
本文介绍了一种简单而高效的将所有零移动到数组末尾的方法,这种方法不仅简单易懂,而且时间复杂度为O(n),是一个非常优秀的解决方案。