1. 程式人生 > >刷題練習記錄(1)——兩數之和(JAVA 和 Python)

刷題練習記錄(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

    【http://www.cnblogs.com/grandyang/p/4130379.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

【2】【https://www.jianshu.com/p/b71fc7307e42】        

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