1. 程式人生 > 其它 >安卓開發 拼圖

安卓開發 拼圖

具體題目請訪問題目連結:https://leetcode-cn.com/problems/two-sum/

思路:

1 暴力,兩層迴圈直接幹上去,這樣幹上去簡單好做,但是可能就今天面試就到這裡吧,等通知。

2 利用hash表儲存,取代調一層迴圈 key儲存陣列具體的值,value儲存陣列的下標,判斷hash表裡是否包含這個數,包含則說明找到了。沒有包含則把自己加到hash表裡去,繼續下一個尋找。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        // 在一個集合裡去找,看有不有 key存值,value 存 第幾個
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for (int i = 0; i < nums.length; i++){
            // 如果 map 有,則找到了這個值
            if (map.containsKey(target - nums[i])){
                return new int[]{map.get(target - nums[i]),i};
            }
            map.put(nums[i],i);
        }
        return new int[0];
    }
}