1. 程式人生 > >leetCode.1:Two Sum

leetCode.1:Two Sum

轉自來自微信公眾號,一個專注應屆生網際網路求職分享的公眾號:公眾號ID:“菜鳥名企夢”

難易程度:★

重要性:★★

 問題:即給定一個數組nums和一個整數target,如何從陣列中找出這兩個數?(假定只有一組解)

import java.util.HashMap;

public class Solution {
    /*
     *分析:遍歷陣列nums,對於nums[i],我們需要找到target-nums[i]是否在陣列中:
     *    如果不在,則nums[i]不是我們要找的數;
     *    如果在,則我們找到了滿足條件的兩個數,並且需要返回這兩個數在nums陣列中的索引值。
     * 由於需要返回目標數的索引值,所以我們需要記錄nums陣列中已經遍歷過的數以及該數值在nums陣列中的索引位置,
     * 所以採用HashMap來儲存:key為nums陣列中的值,value為對應數在nums陣列中的索引下標:
     */
    public int[] twoSum(int[] nums, int target) {
        int[] res = new int[2];
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target - nums[i])) {
                res[0] = map.get(target - nums[i]);
                res[1] = i;
            } else {
                map.put(nums[i], i);
            }
        }
        return res;
    }
}