解決兩數(shù)之和 (Javascript, Java, C#, Swift, Kotlin, Python,C++, Golang)

解決兩數(shù)之和?(Javascript, Java, C#, Swift, Kotlin, Python,C++,?Golang)



給定一個整數(shù)數(shù)組南蓬,返回兩個數(shù)字的索引屡拨,以便它們加起來成為一個特定的目標。



您可以假定每個輸入都只有一個解決方案,并且您可能不會兩次使用同一元素。


舉例:


給定數(shù)組?=[2, 7, 11, 15],?目標值?= 9,

因為nums[0]+ nums[1] = 2 + 7 = 9,

所以返回?[0,1].


思路:


我們定義一個字典來存儲元素及其索引。

我們將一一檢查元素桶现。

?假設(shè)當前元素是a;

?我們將元素及其索引存儲到字典中;

?并使用目標減去當前元素來獲得差值b卖词;

?我們檢查映射是否可以使用b作為鍵來獲取任何內(nèi)容巩那,如果該值不為空并且其索引也不相同,則得到答案此蜈。


Javascript:


twoSum =(nums, target)=> {

??? let map = newMap;

??? for(let i = 0; i< nums.length; i ++) {

???????let a = nums[i];

???????let b = target - a;

???????let j = map.get(b);

???????if(j !== undefined) {

?????????if(j !== i){

????????????return [i, j ];

?????????}

???????}

???????map.set(a, i);

??? }


??? return [];

}


console.log(twoSum([2,7,11,15],9))

console.log(twoSum([3,2,4],6))

console.log(twoSum([3,3],6))


Java:


importjava.util.*;

public classHelloWorld{

???? publicstatic void main(String []args){

???????System.out.println(Arrays.toString(twoSum(newint[]{2,7,11,15}, 9)));

???????System.out.println(Arrays.toString(twoSum(newint[]{3,2,4}, 6)));

???????????????????????System.out.println(Arrays.toString(twoSum(newint[]{3,3}, 6)));

???? }


????????????public static int[] twoSum(int[] nums, inttarget) {

???????????????????????Map<Integer,Integer> map = new HashMap<Integer, Integer>();

???????????????????????for(int i = 0 ; i<nums.length; i++){

????????????????????????????????????????????????int a = nums[i];

????????????????????????????????????????????????int b = target - a;

????????????????????????????????????????????????Integer j = map.get(b);

???????????????????????????????????????????????map.put(a, i);

????????????????????????????????????????????????if(j != null && i != j) {

????????????????????????????????????????????????????????????return new int[]{i,j};

????????????????????????????????????????????????}

???????????????????????}

???????????????????????return new int[]{};

??? }

}


c#:


usingSystem;

usingSystem.Collections.Generic;

classHelloWorld {

??? public staticvoid Main(string[] args)

??? {


???????Console.WriteLine(string.Join(",",twoSum(newint[]{2,7,11,15}, 9)));

???????Console.WriteLine(string.Join(",",twoSum(new int[]{3,2,4},6)));

???????Console.WriteLine(string.Join(",",twoSum(new int[]{3,3},6)));

??? }


??? public staticint[] twoSum(int[] nums, inttarget) {

??????????? Dictionary<int,int> map= new Dictionary<int, int>();

??????????? for(inti = 0 ; i<nums.Length; i++) {

????????????????????????int a = nums[i];

????????????????????????int b = target - a;

????????????if(map.ContainsKey(b)) {

????????????????int j = map[b];

????????????????if(i != j) {

????????????????????return new int[]{i,j};

????????????????}????????????????????

????????????}

????????????map[a] = i;

??????????? }

??????????? returnnew int[]{};

??? }

}


Swift:


importFoundation


functwoSum(_ nums: [Int], _ target:Int) -> [Int] {

??? var map = [Int :Int]()

??? for (i, a) innums.enumerated() {

???????var b = target - a;

???????var j = map[b]

???????if(j != nil) {

???????????var jj = j!

???????????return [i,jj]

???????}

???????map[a] = i

??? }

??? return []

}


print(twoSum([2,7,11,15],9))

print(twoSum([3,2,4],6))

print(twoSum([3,3],6))


Kotlin:


funtwoSum(nums: IntArray, target:Int): IntArray {

??? valmap:HashMap<Int,Int> =HashMap<Int,Int>()

??? for ((i, a) innums.withIndex()) {

??????????? varb = target - a

???????var j = map.get(b)

???????if(j != null) {

???????????var jj = j!!

???????????if(jj != i){

???????????????return intArrayOf(i, j)

???????????}

???????}

???????map.set(a, i)

???????????}


??? returnintArrayOf()

}


fun main() {

???println(twoSum(intArrayOf(2,7,11,15),9).joinToString(","))

??? println(twoSum(intArrayOf(3,2,4),6).joinToString(","))

???println(twoSum(intArrayOf(3,3),6).joinToString(","))

}



Python:


deftwoSum(nums, target):

??? map = {}

??? i = 0

??? l = len(nums)

??? while i < l:

???????a = nums[i]

???????b = target - a

???????j = map.get(b)

???????if j is not None:

???????????if j != i:

???????????????return [i,j]

???????map[a] = i

???????i += 1

??? return[]???

print(twoSum([2,7,11,15],9))

print(twoSum([3,2,4],6))

print(twoSum([3,3],6))


C++:


#include<iostream>

#include<vector>

#include<map>


usingnamespace std;

vector<int>twoSum(vector<int>&nums, int target) {

??? std:map<int,int> map;

??? vector<int>ret;

??? for(int i = 0; i< nums.size(); i ++) {

???????int a = nums[i];

???????int b = target - a;

???????std::map<int,int>::iterator it =map.find(b);

???????if(it != map.end()) {

???????????int j = it->second;

???????????if(j != i) {

???????????????ret.push_back(i);

???????????????ret.push_back(j);

??????????????return ret;

???????????}

???????}


???????map.insert(std::pair<int, int>(a,i));

??? }

??? return ret;

}

int main()

{

??? {

???????std::vector<int> nums;

???????nums.push_back(2);

???????nums.push_back(7);

???????nums.push_back(11);

???????nums.push_back(15);

???????std::vector<int> ret =twoSum(nums, 9);

???????for (std::vector<int>::iteratorit = ret.begin() ; it != ret.end(); ++it){

???????????std::cout << *it <<',';

???????}

???????std::cout << '\n';

??? }

??? {

???????std::vector<int> nums;

???????nums.push_back(3);

???????nums.push_back(2);

???????nums.push_back(4);

???????std::vector<int> ret =twoSum(nums, 6);

???????for (std::vector<int>::iteratorit = ret.begin() ; it != ret.end(); ++it){

???????????std::cout << *it <<',';

???????}

???????std::cout << '\n';

??? }

??? {

???????std::vector<int> nums;

???????nums.push_back(3);

???????nums.push_back(3);

???????std::vector<int> ret =twoSum(nums, 6);

???????for (std::vector<int>::iteratorit = ret.begin() ; it != ret.end(); ++it){

???????????std::cout << *it <<',';

???????}


???????std::cout << '\n';

??? }


??? return 0;

}



Golang:


package main


import (

???????????"fmt"

)


functwoSum(nums []int, target int)[]int {

???????var mapCheck = make(map[int]int)

???????var a int

???????var b int

???????????for i:=0; i < len(nums) ; i ++ {

???????????????????????a = nums[i]

???????????????????????b = target - a


???????????????????????if j, ok := mapCheck[b]; ok {

???????????????????????????????????if( j != i){

???????????????????????????????????????????????return[]int{i,j}

???????????????????????????????????}

???????????????????????}


???????????????????????mapCheck [a] = i

???????????}

???????????return []int{}

}


func main(){

???????????fmt.Println(twoSum([]int{2,7,11,15},9))

???????????fmt.Println(twoSum([]int{3,2,4}, 6))

???????????fmt.Println(twoSum([]int{3,3}, 6))

}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末即横,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子裆赵,更是在濱河造成了極大的恐慌东囚,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件战授,死亡現(xiàn)場離奇詭異页藻,居然都是意外死亡,警方通過查閱死者的電腦和手機植兰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門份帐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人楣导,你說我怎么就攤上這事废境。” “怎么了筒繁?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵噩凹,是天一觀的道長。 經(jīng)常有香客問我毡咏,道長驮宴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任呕缭,我火速辦了婚禮堵泽,結(jié)果婚禮上修己,老公的妹妹穿的比我還像新娘。我一直安慰自己迎罗,他們只是感情好箩退,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佳谦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滋戳。 梳的紋絲不亂的頭發(fā)上钻蔑,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音奸鸯,去河邊找鬼咪笑。 笑死,一個胖子當著我的面吹牛娄涩,可吹牛的內(nèi)容都是我干的窗怒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蓄拣,長吁一口氣:“原來是場噩夢啊……” “哼扬虚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起球恤,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辜昵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咽斧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堪置,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年张惹,在試婚紗的時候發(fā)現(xiàn)自己被綠了舀锨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡宛逗,死狀恐怖坎匿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拧额,我是刑警寧澤碑诉,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站侥锦,受9級特大地震影響进栽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜恭垦,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一快毛、第九天 我趴在偏房一處隱蔽的房頂上張望格嗅。 院中可真熱鬧,春花似錦唠帝、人聲如沸屯掖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贴铜。三九已至,卻和暖如春瀑晒,著一層夾襖步出監(jiān)牢的瞬間绍坝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工苔悦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留轩褐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓玖详,卻偏偏與公主長得像把介,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蟋座,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,701評論 0 3
  • [ 80 questions / 3 ~= 27 a month..ok.. ] 1.29: remove_dup...
    陳十十閱讀 505評論 0 1
  • 1砂缩、感恩父母的養(yǎng)育之恩,天地的庇佑三娩。 2庵芭、感恩今天驚蟄,脫去了厚重的羽絨服雀监,來感受春天的溫柔双吆,感恩當“蟄”則伏,當...
    妸雨杺乷閱讀 198評論 0 0
  • 顛倒了会前,世界則不同了好乐。
    10086好閱讀 167評論 0 0
  • 補分享255天 游泳第三天教練才發(fā)現(xiàn)她不好管,太貪玩瓦宜。說這倆孩子各有特點:大的文氣不好管蔚万,小的活潑卻很聽話,我表面...
    簡書vicky閱讀 224評論 0 2