非ゼロ要素の相対的な順序を維持しながらNUMS配列を指定し、すべての書き込み機能は、アレイ0の最後に移動しました。
例:
入力:[0,1,0,3,12]
出力:[1,3,12,0,0]
説明:
元の配列上で動作しなければならない、あなたは追加の配列をコピーすることはできません。
操作の数を最小限に抑えます。
アイデア:レコードの0の数(すなわち、現在の数が前方に長さを移動するために必要)。
最後に0が最後に割り当てられます。
class Solution {
public void moveZeroes(int[] nums) {
int zero=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==0){
zero++;
}else {
nums[i-zero]=nums[i];
}
}
while(zero>0){
nums[nums.length-zero]=0;
zero--;
}
}
}