题目:给定一个数组,编写一个函数将所有 0 移动到数组末尾,同时保持非零元素的相对顺序
给定一个 int 类型数组
int[] nums = {0,1,0,3,12};
常规方法
定义一个 int 类型的新数组和一个常量 kint[] nums = int[nums.length];
int k = 0;
遍历 nums 数组并判断
for(int i = 0;i < nums.length;i++){
if(nums[i] != 0){
arr[k++] = nums[i];
}
}
遍历 arr 数组
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + "\t"); //1,3,12,0,0
}
源代码
public static void main(String[] args) {
int[] arr = new int[]{1,3,0,12,0,0};
int[] num = new int[arr.length];
int k = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
num[k++] = arr[i];
}
}
for (int i : num) {
System.out.println(i);
}
}
不创建新数组
定义一个 int 类型的 kint k = 0;
遍历数组
for(int i = 0;i < nums.length;i++){
if(nums[i] != 0){
nums[k++] = nums[i];
}
}
//把后面
for(int i = k;i < nums.length;i++){
num[i] = 0;
}
遍历输出
for(int i = 0;i < nums.length;i++){
System.out.print(nums[i] + "\t"); //1 2 12 0 0
}
源代码
public void moveZeroes(int[] nums) {
int k = 0;
for(int i = 0; i < nums.length;i++){
if(nums[i] != 0){
nums[k++] = nums[i];
}
}
for(int i = k; i < nums.length;i++){
nums[i] = 0;
}
}
本文介绍如何在不创建新数组的情况下,通过遍历操作将给定数组中的所有0移动到末尾,同时保持非零元素的原始顺序。两种方法对比及源代码示例详细解析。
8万+

被折叠的 条评论
为什么被折叠?



