Lesson 3 question 2 PermMissingElem

源地址

https://app.codility.com/programmers/lessons/3-time_complexity/perm_missing_elem/

PermMissingElem(缺失的元素)

給定一個包含N個不同整數的數組A,數組包含範圍在[1…(N + 1)]範圍內的整數,也就是說有一個元素缺失了。
你的目標是找到這個缺失的元素。
寫一個函數

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

給定一個數組A,返回這個缺失的元素的值。
比如,給定如下數組A

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

函數返回4。
假定:

  • N是範圍在 [0…100,000]之間的整數
  • A中的所有元素都是唯一的
  • A中的每一個元素都是在範圍[1…(N + 1)]之內的整數

第一步

講數組排序,然後遍歷,如果 i+1 ≠ ai,那麼缺失的就是 i+1。

   public int solution(int[] A) {
        int len = A.length;
        if (len == 0) {
            return 1;
        }
        Arrays.parallelSort(A);
        for (int i = 0; i < len; i++) {
            if (A[i] != i + 1) {
                return i + 1;
            }
        }
        return len + 1;
    }

第二步

因爲只缺失了一個,所以可以先吧A中的元素都放到另一個長度爲N+1的數組中,然後新數組中爲空的那個位置,即爲缺失的元素。

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