LeetCode_1_TwoSum(Java Code)
2016-02-18 22:19
459 查看
Java版
输出结果:
/** * LeetCode_TwoSum * @author ChrisWang * @Date 2016年2月18日 下午9:49:20 * @Description: 给定一个整型数组,找出能相加起来等于一个特定目标数字的两个数。 * @Example:输入: numbers={2, 7, 11, 15}, target=9 * 输出: index1=1, index2=2 * @Thinking: 1,使用两个嵌套循环来遍历数组,复杂度:O(n*n) * 2,使用Map存储对应数的下标,复杂度O(n) */ public class Solution { public static void main(String[] args) { int[] arr = {3, 2, 9, 10, 5, 7, 8, 1}; int target = 12; System.out.println(getTwoIndex(arr, target)); } public static List<Map<String, Integer>> getTwoIndex(int[] arr, int target) { // 定义一个Map集合用来存放数组中的值以及相应的下标 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); // 遍历数组,将数组中的值以及其对应的下标存放到map中 for(int i=0; i<arr.length; i++) { map.put(arr[i], i); } // 用来存放下标 Map<String, Integer> temp = null; // 存放上面的数组 List<Map<String, Integer>> list = new ArrayList<>(); // 遍历数组查找 for(int i=0; i<arr.length; i++) { // map中存在要查找的那个值,并且那个值对应的下标不能是当前元素的下标,即不能是当前元素 if(map.containsKey(target-arr[i]) && map.get(target-arr[i])>i) { temp = new HashMap<>(); temp.put("index_1", i); temp.put("index_2", map.get(target-arr[i])); list.add(temp); } } return list; } }
输出结果:
[{index_1=0, index_2=2}, {index_1=1, index_2=3}, {index_1=4, index_2=5}]
相关文章推荐
- java学习之JDBC
- Java 入门 之 AWT 与 Swing 的比较
- Java中JSON操作
- Spring事务的来龙去脉
- spring hibernate4整合问题
- Java byte数据类型详解
- Servlet生命周期
- Eclipse导出JavaDoc中文乱码问题解决
- 01、数据类型初阶(Java的基本数据类型)
- 简单的java Socket 例子
- 解决java mail发送TXT附件被直接显示在正文中的问题
- JDK,JRE,JVM区别与联系
- JAVA学习记录 -- 线程Ⅰ
- Java工程师成神之路
- 2015年阿里巴巴中间件比赛rpc框架
- KeeCMS框架
- JDBC(Java DataBase Connectivity)连接到MySQL
- Java学习笔记2016.2.18 接口续、单例模式
- SpringMVC中在web.xml中添加中文过滤器的写法
- java5中原子型操作类的应用