力扣刷題第一題兩數之和
- 題目要求
- 解題
- 方法一(常規解法)
- 方法二(速度快)
題目要求

解題
方法一(常規解法)
遍歷陣列
當為第一個數的時候,從后面找有沒有和他相加得結果的數
如果有就回傳下標
JS代碼
var twoSum = function(nums, target) {
let data = [];
let k = 0;
for(let i = 0;i<nums.length;i++){
for (let j = i + 1;j<nums.length;j++){
if(nums[i]+nums[j]==target){
data[k] = i;
data[k+1] = j;
k++;
i=j;
}
}
}
return data;
};
或者
var twoSum = function(nums, target) {
let c = [];
for (let index of nums.keys()){
if(c.indexOf(nums[index])>=0){
return [c.indexOf(nums[index]),index]
}
else{
c.push(target-nums[index]);
}
}
}
方法二(速度快)

思路:
既然我們要找一對數,且這一對數的和Y是確定的,那么我們知道X就可以知道需要什么數(Y-X)
所以我們找的是(Y-X)但是遍歷原陣列比較慢且需要對比,如果建立一個新的對照表比如
我們有一個陣列
arr = [1,3,4,2] 求出和target等于6的兩數的下標
我們可以新建一個空陣列arrN=[]用來存盤target-value(當前遍歷的arr陣列的某個值,比如1也可以是3/4/2)
遍歷arr的時候每次先從arrN中看看當前arr數是否存在于arrN
為什么呢,arr遍歷第一次的時候 arrN為空,我們讓arrN存盤5 (6-1)
此時arrN=[5] 此時我們發現5在arrN中的下標是0,1在arr中的下標也是0
繼續遍歷arr此時遍歷到值為3
我們用arrN.indesOf(3)來回傳arrN中第一次出現3的下標,如果沒有就回傳-1,很顯然arrN=[5]中并沒有3,然后arrN存盤3(6-3) 此時arrN=[5,3]
繼續遍歷arr此時遍歷到值為4
我們用arrN.indesOf(4)來回傳arrN中第一次出現4的下標,如果沒有就回傳-1,很顯然arrN=[5,3]中并沒有4,然后arrN存盤2(6-4) 此時arrN=[5,3,2]
繼續遍歷arr此時遍歷到值為2
我們用arrN.indesOf(2)來回傳arrN中第一次出現4的下標,如果沒有就回傳-1,很顯然arrN=[5,3,2]中有2,arrN.indesOf(2)回傳了2,也就是2在arrN中的下標,此時我們也知道arr遍歷到陣列下標為3的元素
那么我們回傳[2,3]就是題目所需結果
需要理解的是 我們往arrN中存數的時候,比如我們處理arr第一個數1,此時1的下標是0,那么我們的arrN開始存第一個數5(6-1),5在arrN中的下標也是0,5就是匹配下標為0的數所需的數,所以我們在后面找arr中的數是否存在于arrN中就行了,
當我們遍歷到4的時候存盤了2,遍歷到2的時候,發現2存在于arrN中,且下標為2,2在arr中下標是3
所以回傳[2,3]
代碼如下
var twoSum = function(nums, target) {
let c = [];
for (let index of nums.keys()){
if(c.indexOf(nums[index])>=0){
return [c.indexOf(nums[index]),index]
}
else{
c.push(target-nums[index]);
}
}
};
或者
var twoSum = function(nums, target) {
let c = [];
for (let index of nums.keys()){
let a = c.indexOf(nums[index]);
if(a>=0){
return [a,index]
}
else{
c.push(target-nums[index]);
}
}
};
后續會推出
每個平臺的詳細搭建程序
前端:js入門 vue入門 vue開發小程式 等
后端: java入門 springboot入門等
服務器:mysql入門 服務器簡單指令 云服務器運行專案
python:推薦不溫卜火 一定要看哦
一些插件的使用等
大學之道亦在自身,努力學習,熱血青春
如果對編程感興趣可以加入我們的qq群一起交流:974178910

有問題可以下方留言,看到了會回復哦
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/236611.html
標籤:其他
上一篇:LeetCode題解:在排序陣列中查找元素的第一個和最后一個位置
下一篇:html基礎語法總結
