分享
  1. 首页
  2. 文章

Solve two sum problem (Javascript, Java, C#, Swift, Kotlin, Python, C++, Golang)

aside section._1OhGeD · · 1112 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums =[2, 7, 11, 15], target = 9,

Becausenums[0] + nums[1] = 2 + 7 = 9,

return [0,1].

Solution:

We define a map to store the element with its index as a map;

We are going to check element one by one;

Let's say the current element is a;

We store the element with its index into map;

and use the target to minus the current element to get the difference as b;

We check if the map can get anything with b as the key, if the value is not empty and is also not the same with its index, we get the answer.


Javascript:


twoSum =(nums, target)=> {

let map = new Map;

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{

public static void main(String []args){

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

System.out.println(Arrays.toString(twoSum(new int[]{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 static void 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 static int[] 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) in nums.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 {

val map:HashMap<Int,Int> =HashMap<Int,Int>()

for ((i, a) in nums.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)

}


return intArrayOf()

}


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

}




有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section._1OhGeD

查看原文:Solve two sum problem (Javascript, Java, C#, Swift, Kotlin, Python, C++, Golang)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1112 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏