Java刷題隨筆---001--兩數之和
阿新 • • 發佈:2021-12-20
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]; } }