q:给定一个数组,将所有0元素移动到末尾,同时保证非0元素相对顺序
a:以下是使用Java实现将所有0元素移动到末尾,同时保证非0元素相对顺序的示例代码:
public class MoveZeros {public static void moveZeros(int[] nums) {int nonZeroIndex = 0;// 遍历数组,将非零元素移动到前面for (int i = 0; i < nums.length; i++) {if (nums[i] != 0) {nums[nonZeroIndex] = nums[i];nonZeroIndex++;}}// 将剩余位置的元素置为0while (nonZeroIndex < nums.length) {nums[nonZeroIndex] = 0;nonZeroIndex++;}}public static void main(String[] args) {int[] nums = {0, 1, 0, 3, 12};moveZeros(nums);// 输出移动后的数组for (int num : nums) {System.out.print(num + " ");}}
}
在这个示例中,我们定义了一个moveZeros方法,该方法接受一个整数数组作为参数,并将所有0元素移动到末尾,同时保持非0元素的相对顺序。
在main方法中,我们创建一个示例数组nums,然后调用moveZeros方法来移动0元素。最后,我们遍历移动后的数组并打印出来。
运行这个示例代码,你将得到输出结果1 3 12 0 0,表示所有0元素已被移动到数组的末尾,同时非0元素的相对顺序保持不变。