解决两数之和 (Javascript, Java, C#, Swift, Kotlin, Python,C++, Golang)

解决两数之和?(Javascript, Java, C#, Swift, Kotlin, Python,C++,?Golang)



给定一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标。



您可以假定每个输入都只有一个解决方案,并且您可能不会两次使用同一元素。


举例:


给定数组?=[2, 7, 11, 15],?目标值?= 9,

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

所以返回?[0,1].


思路:


我们定义一个字典来存储元素及其索引。

我们将一一检查元素。

?假设当前元素是a;

?我们将元素及其索引存储到字典中;

?并使用目标减去当前元素来获得差值b;

?我们检查映射是否可以使用b作为键来获取任何内容,如果该值不为空并且其索引也不相同,则得到答案。


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))

}


?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,694评论 0 3
  • [ 80 questions / 3 ~= 27 a month..ok.. ] 1.29: remove_dup...
    陈十十阅读 498评论 0 1
  • 1、感恩父母的养育之恩,天地的庇佑。 2、感恩今天惊蛰,脱去了厚重的羽绒服,来感受春天的温柔,感恩当“蛰”则伏,当...
    妸雨杺乷阅读 194评论 0 0
  • 颠倒了,世界则不同了。
    10086好阅读 165评论 0 0
  • 补分享255天 游泳第三天教练才发现她不好管,太贪玩。说这俩孩子各有特点:大的文气不好管,小的活泼却很听话,我表面...
    简书vicky阅读 221评论 0 2