1. 两数之和
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. 你可以假设每个输入都只会有一种答案,同样的元素不能被重用。 示例:
Given nums = [
2,
7,
11,
15], target =
9,
Because nums[
0] + nums[
1] =
2 +
7 =
9,
return [
0,
1].
Soultion
using System;
using System.Collections.Generic;
public class Solution {
public int[]
TwoSum(
int[] nums,
int target) {
int[] resultIndexs =
new int[
2];
if(nums.Length ==
0){
return resultIndexs;
}
Dictionary<
int, List<
int>> numsDictionary =
new Dictionary<
int, List<
int>>();
int length = nums.Length;
for(
int i =
0; i < length; i++){
if(!numsDictionary.ContainsKey(nums[i])){
numsDictionary.Add(nums[i],
new List<
int>());
}
numsDictionary[nums[i]].Add(i);
}
foreach(
var tempNumber
in numsDictionary.Keys){
int leftNumber = target - tempNumber;
if(leftNumber != tempNumber){
if(numsDictionary.ContainsKey(leftNumber)){
resultIndexs[
0] = numsDictionary[tempNumber][
0];
resultIndexs[
1] = numsDictionary[leftNumber][
0];
return resultIndexs;
}
}
else{
if(numsDictionary[tempNumber].Count >=
2){
resultIndexs[
0] = numsDictionary[tempNumber][
0];
resultIndexs[
1] = numsDictionary[tempNumber][
1];
return resultIndexs;
}
}
}
return resultIndexs;
}
}