>[success] # 求兩數之和
~~~
給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。
~~~
* 示例
~~~
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
~~~
>[danger] ##### 解題--PYTHON
* 思路
~~~
1.利用enumerate 知道,列表中對應的位置
2.利用字典存儲
3.利用字典in 可以判斷k 是否存在
~~~
~~~
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
dic = {}
for k,v in enumerate(nums):
if v in dic:
return [dic[v],k]
else:
dic[target-v] = k
~~~
* 最快解法

>[danger] ##### 兩數之和 JAVASPRICT
~~~
1.和python 思路一樣用差值方法去解這個問
~~~
* 利用 javaSprict 的for i in 判斷當前key是否存在
~~~
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let targetObje = {}
for(var index=0;index<nums.length;index++){
let sub = target - nums[index]
if(nums[index] in targetObje){
return [targetObje[nums[index]],index]
}else{
targetObje[sub] = index
}
}
};
~~~
* 利用typeof 替代 for i in的判斷
~~~
let twoSum = function(nums, target) {
let map = {};
let length=nums.length
for(let i =0; i<length;i++){
let d = target - nums[i]
if(typeof(map[d]) !== 'undefined'){
return [map[d], i]
}else{
map[nums[i]]=i
}
}
};
- 接觸數據結構和算法
- 數據結構與算法 -- 大O復雜度表示法
- 數據結構與算法 -- 時間復雜度分析
- 最好、最壞、平均、均攤時間復雜度
- 基礎數據結構和算法
- 線性表和非線性表
- 結構 -- 數組
- JS -- 數組
- 結構 -- 棧
- JS -- 棧
- JS -- 棧有效圓括號
- JS -- 漢諾塔
- 結構 -- 隊列
- JS -- 隊列
- JS -- 雙端隊列
- JS -- 循環隊列
- 結構 -- 鏈表
- JS -- 鏈表
- JS -- 雙向鏈表
- JS -- 循環鏈表
- JS -- 有序鏈表
- 結構 -- JS 字典
- 結構 -- 散列表
- 結構 -- js 散列表
- 結構 -- js分離鏈表
- 結構 -- js開放尋址法
- 結構 -- 遞歸
- 結構 -- js遞歸經典問題
- 結構 -- 樹
- 結構 -- js 二搜索樹
- 結構 -- 紅黑樹
- 結構 -- 堆
- 結構 -- js 堆
- 結構 -- js 堆排序
- 結構 -- 排序
- js -- 冒泡排序
- js -- 選擇排序
- js -- 插入排序
- js -- 歸并排序
- js -- 快速排序
- js -- 計數排序
- js -- 桶排序
- js -- 基數排序
- 結構 -- 算法
- 搜索算法
- 二分搜索
- 內插搜索
- 隨機算法
- 簡單
- 第一題 兩數之和
- 第七題 反轉整數
- 第九題 回文數
- 第十三題 羅馬數字轉整數
- 常見一些需求
- 把原始 list 轉換成樹形結構