题目描述:
分析:由于要使非零元素保持原数组的顺序,我只能想出在找到一个0时,逐个移动数组元素使得后一个元素覆盖前一个元素,再将这个0移到后头去。
我的代码:
1 public class Solution { 2 /* 3 * @param nums: an integer array 4 * @return: 5 */ 6 public void moveZeroes(int[] nums) { 7 // write your code here 8 //当数组为空时直接返回 9 if(nums.length == 0) { 10 return; 11 } 12 boolean b = true; 13 //判断数组是否全为0,若是,则直接返回 14 for(int i=0; i<nums.length; i++) { 15 if(nums[i] != 0) { 16 b = false; 17 } 18 } 19 if(b == true) { 20 return ; 21 } 22 23 int k = nums.length-1; 24 int i = k; 25 while(i >= 0) { 26 //从后往前找元素值为0的数 27 while(i>=0 && nums[i]!=0) { 28 i--; 29 } 30 if(i >= 0) { 31 int temp = nums[i]; 32 for(int j=i; j<k; j++) { 33 nums[j] = nums[j+1]; 34 } 35 nums[k] = temp; 36 k--; 37 } 38 } 39 } 40 }
时间: 2024-10-19 02:43:08