# Java 玩转数组 求解两数之和 两种做法 leetCode 笔试、面试高频

## 解法一：

import java.util.Scanner;

public class Main{

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int nums[] = new int[5]; // 输入的数组
int target = 0;          // 定义两数求和的目标值
for(int i = 0; i < 5; i++) {
nums[i] = in.nextInt();
}

target = in.nextInt();
System.out.print("输入数组为:");
for(int z = 0; z < 5; z++) {
System.out.print(nums[z] + ", ");

}
int result[] = new int[2];
result = twoSum(nums, target);
System.out.println();
System.out.print("结果为:" + "[");
for(int j = 0; j < result.length; j++) {
System.out.print(result[j]+",");
}
System.out.print("]");
}

// twoSum 求两数之和为target的方法
public static int[] twoSum(int[] nums, int target) {
int i = 0;
int j = 0;
int x = 0;
int y = 0;
for(; i < nums.length; i++){
for(j = i+1; j < nums.length; j++){
if(nums[i] + nums[j] == target){
x = i;
y = j;
break;
}
}
}
int result[] = new int[2];
result[0] = x;
result[1] = y;
return result;
}

}


### 解法二：

import java.util.HashMap;
import java.util.Scanner;

public class Main{

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int nums[] = new int[5]; // 输入的数组
int target = 0;              // 定义两数求和的目标值
for(int i = 0; i < 5; i++) {
nums[i] = in.nextInt();
}

target = in.nextInt();
System.out.print("输入数组为:");
for(int z = 0; z < 5; z++) {
System.out.print(nums[z] + " ");

}
int result[] = new int[2];
result = twoSum(nums, target);
System.out.println();
System.out.print("结果为:" + "[");
for(int j = 0; j < result.length; j++) {
System.out.print(result[j]+",");
}
System.out.print("]");
}

// twoSum 求两数之和为target的方法
public static int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i = 0; i < nums.length; i++){
if(map.containsKey(target - nums[i])){
return new int[]{map.get(target - nums[i]),i};
}
map.put(nums[i], i);
}
return new int[0];
}

}

• 1
点赞
• 0
收藏
觉得还不错? 一键收藏
• 0
评论
05-21 1万+
05-17 2501
08-01 3037
05-23 6477
02-13 1万+
07-29 1万+
04-19 1140
03-01 453
03-31 1242
06-15 672

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。