LeetCode-並べ替え配列から重複を削除

967 ワード

タイトル:
ソート配列を指定すると、繰り返し表示される要素をその場で削除し、各要素が1回だけ表示されるようにして、削除後の配列の新しい長さを返します.「余分な配列空間を使用しないでください.入力配列をその場で修正し、O(1)余分な空間を使用する条件で完了する必要があります」.
実現する
    private static int removeDuplicates(int[] nums) {
        if(nums == null || nums.length == 0){
            return 0;
        }

        int num = 1;
        int sameIndex = -1;
        int maxNum = nums[0];

        for(int i = 0; i < nums.length - 1; i++){
            if(maxNum >= nums[i + 1] && sameIndex < 0){
                sameIndex = i + 1;

            } else if(maxNum < nums[i + 1] && sameIndex >= 0){
                nums[sameIndex] = nums[i + 1];

                maxNum = nums[sameIndex];
                i = sameIndex - 1;

                sameIndex = -1;
                num++;
            } else if(maxNum < nums[i + 1]){
                maxNum = nums[i + 1];

                num++;
            }
        }

        return num;
    }