天天看點

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

關注我帶你看更多技術知識和面試

還是蠻簡單的 思路如果會了;

思路如下:

将其中一個數組中的非零元素擷取到 并依次次放在數組中 ,, 剩下的空位指派為 0 就好了

詳細的話: 定義兩個下标 (相當于快慢下标),然後慢下标對應的值為 等于非零的值(通過快下标擷取到的), 差的補0;

public class Day4_demo6 {
    public static void main(String[] args) {
        int[] nums={0,1,0,3,12};
        for(int i=0;i<nums.length;i++){
            System.out.print(nums[i]+" ");
        }
        int  fast = 0,slow=0;  //定義兩個下标
        while(fast<nums.length){
            for(int i=0;i<nums.length;i++){
                if(nums[fast]!=0){
                    nums[slow]=nums[fast];
                    slow++;
                    fast++;
                }else{
                    fast++;
                }
            }

        }
        for(int i=slow;i<nums.length;i++){
            nums[i]=0;
        }
        System.out.println("");
        System.out.println("移動後如下"  );
        for(int i=0;i<nums.length;i++){
            System.out.print(nums[i]+" ");
        }
    }
}           

複制