記第一篇部落格 LeetCode1兩數之和
阿新 • • 發佈:2019-01-10
第一次寫部落格,就從LeetCode刷題開始,對我這個渣渣來說將是一段漫長而艱辛的旅程。記錄下來,督促自己。。。
給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
c++:
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int>m; vector<int>result; for(int i=0;i<nums.size();i++) m[nums[i]]=i; for(int i=0;i<nums.size();i++) { int t=target-nums[i]; if(m.count(t)&&m[t]!=i) { result.push_back(i); result.push_back(m[t]); break; } } return result; } };
Java:
public class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> m = new HashMap<Integer, Integer>(); int[] res = new int[2]; for (int i = 0; i < nums.length; ++i) { m.put(nums[i], i); } for (int i = 0; i < nums.length; ++i) { int t = target - nums[i]; if (m.containsKey(t) && m.get(t) != i) { res[0] = i; res[1] = m.get(t); break; } } return res; } }