LeetCode題庫整理(自學整理)


1. Two Sum 兩數之和       來源:力扣(LeetCode)
題目:給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。
示例: 給定 nums = [2, 7, 11, 15], target = 9    因為 nums[0] + nums[1] = 2 + 7 = 9   所以返回 [0, 1]
這道題目比較容易想到的是通過暴力搜索求解,但暴力搜索的時間復雜度為 O(n^2)。如果使用哈希的思想,利用Python中list的查詢方式,我們可以將復雜度降低到 O(n)。有兩個值得注意的地方:
(1). 同樣的元素不能重復使用(也就是不能自己加自己)    (2). 給定的數組中可能有相同的元素(比如 [3, 3, 4, 4, 5])
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) {
            if (m.containsKey(target - nums[i])) {
                res[0] = i;
                res[1] = m.get(target - nums[i]);
                break;
            }
            m.put(nums[i], i);
        }
        return res;
    }
}

HashMap是Java中集合的一部分。它提供了Java的Map接口的基本實現。它將數據存儲在(Key,Value)對中。


python代碼:
class Solution:

    def twoSum(self, nums: List[int], target: int) -> List[int]:

        numsMap = {}
        for index,num in enumerate(nums):
            tmpDiff = target-num
            if tmpDiff in numsMap.keys():
                return [numsMap[tmpDiff],index]
            numsMap[num] = index
        return None 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM