LintCode之移動零

題目描述:數組

 

分析:因爲要使非零元素保持原數組的順序,我只能想出在找到一個0時,逐個移動數組元素使得後一個元素覆蓋前一個元素,再將這個0移到後頭去。spa

個人代碼:code

 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 }
相關文章
相關標籤/搜索