移动零题目
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序
题目代码1(在主方法里面直接写)
/**
* 移动零
*/
public class solution4 {
public static void main(String[] args) {
//展示需要移动到数组,这里可以自由定义
int[] nums = new int[]{1, 2, 0, 4, 5};
int i,j=0;
//判断数组是否为空或者单值,这一步视情况可省略
if (nums == null || nums.length <= 1) {
System.out.println("答案要么为空,要么只有一个值");
}
//第一次遍历整个数组,将非零值顺序不变移到前面,同时计算出了非零值的个数j++,接下来从j++开始到整个数组结束的值都设置成0
for (i=0;i< nums.length;i++){
if(nums[i]!=0){
nums[j++]=nums[i];
}
}
while(j< nums.length){
nums[j++]=0;
}
//第二次遍历上一次得到的数组并输出
for(i=0;i< nums.length;i++){
System.out.println(nums[i]);
}
}
}
题目代码二(编写一个函数,在主方法里面调用它)
/**
* 移动零
*/
public class solution4 {
public static void main(String[] args) {
//展示需要移动到数组,这里可以自由定义
int[] nums = new int[]{1, 2, 0, 4, 5};
System.out.println(MoveNumbers(nums));
}
public static char[] MoveNumbers(int[] nums){
int i,j=0;
//判断数组是否为空或者单值,这一步视情况可省略
if (nums == null || nums.length <= 1) {
System.out.println("答案要么为空,要么只有一个值");
}
//第一次遍历整个数组,将非零值顺序不变移到前面,同时计算出了非零值的个数j++,接下来从j++开始到整个数组结束的值都设置成0
for (i=0;i< nums.length;i++){
if(nums[i]!=0){
nums[j++]=nums[i];
}
}
while(j< nums.length){
nums[j++]=0;
}
//第二次遍历上一次得到的数组并输出
for(i=0;i< nums.length;i++){
System.out.println(nums[i]);
}
return new char[0];
}
}
最后
移动零的算法解法多样,不同的语言思维逻辑都大差不差,希望这对您的作业有小小的参考价值