leetCode解題記錄1 - 兩數之和
題目描述
給定一個整數陣列 nums 和一個目標值 target,
請你在該陣列中找出和為目標值的那 兩個 整數,
並返回他們的陣列下標。
你可以假設每種輸入只會對應一個答案。
但是,你不能重複利用這個陣列中同樣的元素。
給定 nums = [2, 7, 11, 15], target = 9,
因為 nums[0] + nums[1] = 2 + 7 = 9,
所以返回 [0, 1]
解題思路
看到題目第一時間想到的就是冒泡,但是既然是正經刷LeetCode,寫個冒泡就有點尷尬了,那麼有沒有時間複雜度低一點的計算方式呢?想了一下就選擇了HASH的方式,思路就是定義一個儲存資料的物件,然後迴圈查詢陣列,然後要做的一點當然就是將當前迴圈到的數字當成鍵,地址當成值,插入物件中,然後計算當前目標結果與當前數字的差,再判斷這個差是不是已經在物件裡,如果在,就說明這兩個就是結果,遂輸出,不然就繼續迴圈。
JS版
/** * @param {number[]} nums * @param {number} target * @return {number[]} */ const twoSum = (nums, target) => { const obj = {} for (let i = 0, len = nums.length; i < len; ++i) { const data = nums[i] const res = target - data if (res in obj) { return [obj[res], i] } obj[data] = i } }
TS版
interface objType { [propName: string]: number } /** * @param {number[]} nums * @param {number} target * @return {number[]} */ const twoSum = (nums: number[], target: number): number[] | undefined => { const obj: objType = {} for (let i: number = 0, len: number = nums.length; i < len; ++i) { const data: number = nums[i] const res: number = target - data if (res in obj) { return [obj[res], i] } obj[data] = i } }
PY版
class Solution: """ :type arg1: List[int] :param nums: :type arg2: int :param target: :rtype: (List[int], None) :return: """ def twoSum(self, nums: List[int], target: int) -> (List[int], None): obj = {} for i, data in enumerate(nums): res = target - data if res in obj: return [obj[res], i] obj[data] = i return None
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3486/viewspace-2823854/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【新手小白刷leetcode記錄貼】 1.兩數之和LeetCode
- [LeetCode 刷題] 1. 兩數之和LeetCode
- LeetCode題集-1- 兩數之和LeetCode
- LeetCode 1 兩數之和LeetCode
- leetcode #1 兩數之和LeetCode
- #leetcode刷題之路1-兩數之和LeetCode
- LeetCode每日一題:兩數之和(No.1)LeetCode每日一題
- LeetCode 1. 兩數之和LeetCode
- LeetCode-1. 兩數之和LeetCode
- 力扣題解1-兩數之和力扣
- LeetCode每日一題 (32)1. 兩數之和LeetCode每日一題
- LeetCode 1 兩數之和(簡單)LeetCode
- leetcode 解題 1.兩數之和-python3 兩種解法 @ 官方LeetCodePython
- LeetCode:兩數之和LeetCode
- LeetCode - 兩數之和LeetCode
- 簡單演算法題:leetcode-1 兩數之和演算法LeetCode
- 用python手刃Leetcode(1):兩數之和【簡單題】PythonLeetCode
- 每日一道 LeetCode (1):兩數之和LeetCode
- [演算法] LeetCode 1.兩數之和演算法LeetCode
- LeetCode-Python 1. 兩數之和LeetCodePython
- 1. 兩數之和
- LeetCode之兩數之和LeetCode
- LeetCode-兩數之和LeetCode
- Leetcode力扣1 兩數之和(Python版)LeetCode力扣Python
- LeetCode: Two sum(兩數之和)LeetCode
- [LeetCode] Two Sum 兩數之和LeetCode
- Leetcode第一題:兩數之和(3種語言)LeetCode
- leetcode-0001 兩數之和LeetCode
- 組隊刷LeetCode - 兩數之和LeetCode
- LeetCode 之 JavaScript 解答第一題 —— 兩數之和(Two Sum)LeetCodeJavaScript
- 從零打卡leetcode之day 1--兩數之和LeetCode
- 兩數之和
- 【leetcode 簡單】 第八十七題 兩整數之和LeetCode
- 每日一道演算法題:1.兩數之和演算法
- python leetcode 之兩數之和(two sum)PythonLeetCode
- leetcode演算法熱題--兩樹之和LeetCode演算法
- 2020/10/31·Leetcode·兩數之和LeetCode
- LeetCode 每日一題,用 Go 實現兩數之和的非暴力解法LeetCode每日一題Go