9.LeetCode 26:Remove Duplicates from Sorted Array

1.題目

2.解決

package com.cl.ch2;

import java.util.Arrays;

public class RemoveDuplicates {
    /**
     * 時間複雜度:O(n)
     * 空間複雜度:O(1)
     * @param nums
     * @return
     */
    public int removeDuplicates(int[] nums) {

        int k=0;
        //[0,k]是不重複的元素
        for(int i=1;i<nums.length;i++){
            if(nums[i]!=nums[k]){
                //不相鄰,說明有重複的元素,
                // 需要將重複元素與非重複的元素互換
                if(i-k!=1)
                    swap(nums,k+1,i);
                k++;
            }
        }
        return k+1;
    }

    private void swap(int[] nums, int k, int i) {
        int tem = nums[k];
        nums[k]=nums[i];
        nums[i]=tem;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{0,0,1,1,1,2,2,3,3,4};
        System.out.println(new RemoveDuplicates().removeDuplicates(arr));
        System.out.println(Arrays.toString(arr));
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章