Lesson 6 question 2 Distinct

源地址

https://app.codility.com/programmers/lessons/6-sorting/distinct/

Distinct

寫一個函數

	class Solution { 
		public int solution(int[] A); 
	}

給定一個含有N個整數的數組A,返回A中不重複值的個數.
比如:

A[0] = 2    A[1] = 1    A[2] = 1
A[3] = 2    A[4] = 3    A[5] = 1

函數應該返回3,因爲不重複的值是1,2,3.
假定:

  • N是範圍在的整數[0…100,000]
  • A中的每一個元素都是範圍在的整數 [−1,000,000…1,000,000]

第一步

在java中,統計不重複的數,用HashMap一步搞定

	public int solution(int[] A) {
        HashSet<Integer> s = new HashSet<Integer>();
        for (int a : A) {
            s.add(a);
        }
        return s.size();
    }

用排序來做

因爲第6課是排序,那麼用排序來試試看

	public int solution(int[] A) {
        Arrays.sort(A);
        int N = A.length;
        int dup = 0;
        for (int i = 0; i < N - 1; i++) {
            if (A[i] == A[i + 1]) {
                dup++;
            }
        }
        return N - dup;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章