1. 程式人生 > 其它 >Java刷題隨筆---001--兩數之和

Java刷題隨筆---001--兩數之和

1. 兩數之和 - 力扣(LeetCode) (leetcode-cn.com)

難度:簡單
題目描述:給定一個整數陣列 nums和一個整數目標值 target,請你在該陣列中找出 和為目標值 target 的那兩個整數,並返回它們的陣列下標。
你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素在答案裡不能重複出現。
你可以按任意順序返回答案。

分析

使用map儲存key為nums[index],value為index。時間複雜度為O(n),空間複雜度為O(n)。
也可以使用暴力搜尋,時間複雜度為O(n²),空間複雜度為O(1)。

解題

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> maps = new HashMap<>();
            for (int i = 0; i < nums.length; i++) {
                int curr = nums[i];
                if (maps.containsKey(target - curr)) {
                    return new int[]{maps.get(target - curr), i};
                }
                maps.put(curr, i);
            }
            return new int[0];
    }
}