题目
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保 持非零元素的相对顺序
思路
定义 j = 0;而后用 for 循环查找数组中的非零变量并赋值给nums[ j ]数组。
定义一个变量并对原数组进行遍历,查找其中的零并计数,而后通过for循环进行数组中零的后移操作,从而实现一个数组中原来值顺序不变,零全部移到数组末尾。
代码
public class Mission9Demo5 {
public static void main(String[] args) {
//给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保 持非零元素的相对顺序。
int[] nums = {0,1,0,3,12};
//调用函数
int[] i = moveZeroes(nums);
System.out.println(Arrays.toString(i));
}
//编写函数
public static int[] moveZeroes(int[] nums) {
//判断数组是否为空
if(nums.length==0||nums==null){
return nums;
}
//数零
int countZeros=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==0){
countZeros++;
}
}
//非零数向前移动,靠变量j实现
int j=0;
for(int i=0;i<nums.length;i++){
if(nums[i]!=0){
nums[j]=nums[i];
j++;
}else{
}
}
//添零到末尾
for(int i=nums.length-countZeros;i<nums.length;i++){
nums[i]=0;
}
return nums;
}
}
结果
结果如下图所示