天天看點

LeetCode之Find All Numbers Disappeared in an Array

1、題目

Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

Find all the elements of [1, n] inclusive that do not appear in this array.

Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

Example:

Input:

[4,3,2,7,8,2,3,1]

Output:

[5,6]

[0]

[1]

2、代碼實作

public class Solution {

    public List<Integer> findDisappearedNumbers(int[] nums) {

 List<Integer> list = new ArrayList<Integer>();

 if (nums == null || nums.length == 0)

  return list;

 Map<Integer, Integer> map = new HashMap<Integer, Integer>();

    for (int  i = 0;  i < nums.length; ++i) {

     map.put(nums[i], 2);

    }

    for (int i = 1; i <= nums.length; ++i) {

     Integer in = map.get(i);

         if (in == null) {

          list.add(i);

         }

     }

  return list;

}

}

3、總結

當我們需要找到數組集合裡面沒有包含哪個元素的時候,我們可以采用HashMap來解決這個問題

比如{1, 2,4, 2, 5}

還有就是找2個字元串裡面第一個不重複元素的問題,我們可以采用HashMap來解決這個問題

s = "leetcode"

return 0.

s = "loveleetcode",

return 2.

或者找字元數組裡面唯一一個重複的字元都可以采用HashMap來解決這個問題

繼續閱讀