leetcode-配列が重複する要素を削除

1754 ワード

ソート配列を指定すると、繰り返し表示される要素をその場で削除し、各要素が1回だけ表示されるようにして、削除後の配列の新しい長さを返します.
余分な配列空間を使用しないでください.入力配列をその場で変更し、O(1)余分な空間を使用する条件で完了する必要があります.
例:
与えられた配列nums=[1,1,2],
関数は新しい長さ2を返し、元の配列numsの最初の2つの要素は1と2でなければなりません.
配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.
class Solution {
    public int removeDuplicates(int[] nums) {
        int currentLength = nums.length,tag = 0,cursor = 0;
        while(tag < currentLength){
            cursor = tag +1;
            while(cursor < currentLength){
                if(nums[tag]==nums[cursor]){
                    removeElement(nums,cursor);
                    currentLength--;
                }else{
                    cursor++;
                }
            }
            tag++;
        }
        return currentLength;
    }
    public void removeElement(int[] nums,int index){
        int length = nums.length;
        for(int i = index;i < length-1;i++){
            nums[i] = nums[i+1];
        }
    }
}