1. 程式人生 > 實用技巧 >leetcode1:兩數之和

leetcode1:兩數之和

給定一個整數陣列 nums和一個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素不能使用兩遍。

==============================Go===============================

func twoSum(nums []int, target int) []int {
    m := map[int]int{}
    for ind, num := range nums {
        if v, ok := m[num]; ok{
            
return []int{ind, v} } else { m[target - num] = ind } } return nil } ------------------------ func twoSum(nums []int, target int) []int { result := []int{} m := make(map[int]int) for i, k := range nums { if value, exist := m[target - k]; exist { result
= append(result, value) result = append(result, i) } m[k] = i } return result }

=================================Python============================

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        for ind, val in enumerate(nums):
            
if val in dic: return [dic[val], ind] else: dic[target - val] = ind

================================Java============================

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> map = new HashMap<>();
        int[] result = new int[2];
        for (int i = 0; i < nums.length; i++){
            if (map.get(nums[i]) != null) {
                result[0] = map.get(nums[i]);
                result[1] = i;
            }else {
                map.put(target - nums[i], i);
            }
        }
        return result;
    }
}