刷題練習記錄(1)——兩數之和(JAVA 和 Python)
【題號001】兩數之和 Two Sum
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
(1)Java版本
(a)方法一:簡單粗暴兩次迴圈陣列
class Solution { public int[] twoSum(int[] nums, int target) {int[] res=new int[2]; int flag=0; for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ int sum=nums[i]+nums[j]; if(sum==target){ res[0]=i; res[1]=j; flag=1;break; } } if(flag==1){ break; } } return res; } }
(b)方法二:使用HashMap進行一次迴圈(待補充)
【HashMap用法】【】
【迭代器用法】【】
====================================================================
【程式碼參考】
【1】【https://www.cnblogs.com/grandyang/p/4606334.html
】
(2)Python版本
使用了字典dict,以及enumerate()函式將列表組合成一個序列索引
【字典用法】【https://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html】
【enumerate用法】【http://www.runoob.com/python/python-func-enumerate.html】
=====================================================================
【程式碼參考】
【1】【https://www.cnblogs.com/qiaojushuang/p/8647705.html】
【https://github.com/JushuangQiao/Python-LeetCode/blob/master/50/1.py】
class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ dict={} for k,v in enumerate(nums): sub=target-v if sub in dict: return [dict[sub], k] dict[v]=k