两个数之和
来源:互联网 发布:进程调度算法代码 编辑:程序博客网 时间:2024/06/05 10:23
给定一个整数数组和一个目标数,让你找出这样的两个数,使得他们相加的和等于目标数。
分析:
刚刚拿到题目的时候,我们会下意识的想到使用一个二重循环来做,这样暴力的搜索肯定是可以的。这样做的时间复杂度为O(n*n),明显不是出题者愿意看到的一个答案。
这道题我们可以使用集合中的一个map集合来做,这种方式会使我们的时间复杂度大大的减小。
我们遍历一次将每个值放入key的位置。然后在value的位置同意放他们的下表。然后在遍历一次,将可以匹配key的值和这个数一起输出,即可!
代码如下:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class TwoNumber_add {
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<>();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数组,用空格隔开");
String str = scanner.nextLine();
System.out.println("请输入目标数");
int targer = scanner.nextInt();
String[] arr = str.split(" ");
//扫描第一遍,将key值放置好
for(int i =0;i<arr.length;i++){
int a = Integer.parseInt(arr[i]);
map.put(a, i);
}
//扫描第二遍,将可以匹配的结果输出
for(int i=0;i<arr.length ;i++){
int a = targer - Integer.parseInt(arr[i]);
if(map.containsKey(a)){
System.out.println(a+" "+Integer.parseInt(arr[i]));
map.remove(Integer.parseInt(arr[i]));
}
}
}
}
如果有什么没有考虑清楚的,请各位指正。感谢!
- 求两个数之和
- 两个数之和
- 两个数之和等于目标数
- 数组两个数之和,等于给定数
- 求a和b两个数之和
- 两个数之和等于第三个数
- 两个数之和等于第三个数 --改進版 。
- 求a和b两个数之和
- LeetCode 1 找出两个数之和
- C++ 两个数的绝对值之和
- 求A和B两个数之和
- 两个数之和C语言实现
- 【Ex.】随机产生两个数计算之和
- 找出数组中两个数之和为指定的数
- 一个数(3000内)等于两个素数之和
- C#第三周 任务4 求两个数之和
- Hard 不用+号实现两个数之和 @CareerCup
- 求两个链表结点组成的数之和
- Linux中top命令详解
- [后缀自动机 模板题] SPOJ 1812Longest Common Substring II & BZOJ 2946 [Poi2000]公共串
- Codeforces724D. Arpa's weak amphitheater and Mehrdad's valuable Hoses(并查集+背包)
- PAT甲级1091
- 重新认识java(六) ---- java中的另类:static关键字(附代码块知识)
- 两个数之和
- Java并发编程的艺术 读笔
- 小鸦-拦截器和监听器,过滤器的区别
- [后缀自动机 模板题] SPOJ 8222 Substrings
- 对这一阶段C语言的总结
- 解决df -h 发现/目录100%的问题
- Openjudge NOI题库1.7编程基础之字符串 34:回文子串
- Shiro Quickstart
- 创建对象之原型模式