1. 程式人生 > >刷爆LeetCode之 移動零

刷爆LeetCode之 移動零

移動零

給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。

示例:

輸入:
[0,1,0,3,12]
輸出:[1,3,12,0,0]

說明:

  1. 必須在原陣列上操作,不能拷貝額外的陣列。
  2. 儘量減少操作次數。

解題思路:

從後向前雙重迴圈遍歷陣列,遇到零就與其後一位交換位子。與氣泡排序原理相似。

程式碼如下:

public void moveZeroes(int[] nums) {
        for(int i=nums.length-1;i>0;i--) {
            	for(int j=nums.length-1;j>0;j--) {
            		if(nums[j-1]==0) {
            			nums[j-1]=nums[j];
            			nums[j]=0;
            		}
            	}
            }
    }