1. Two Sum
来源:互联网 发布:java替换\ 编辑:程序博客网 时间:2024/06/15 20:37
题目
给定一个整数数组和一个指定的值,返回数组中两个元素的索引值,这两个元素需要满足相加等于这个指定的值。
您可以假设每个输入都仅有一个解决方案,不能使用相同的元素两次。
Example
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
解答思路
本题的难点在于不能使用相同的元素两次,所以,时间复杂度要求是
我有一种思路:就是利用空间换时间。
由于数组不便于查找指定元素,所以,我想到了定义一个List集合,将数组中的元素存入List集合中。然后再遍历数组,如果target为指定的值,且当前元素是nums[i],则可以很快的判断List中是否存在值为(target-nums[i])的元素。
下面则是该思路的Java程序:
public int[] twoSum(int[] nums, int target) { List list = new ArrayList(); int[] index = new int[2]; for(int i = 0;i < nums.length;i++){ list.add(nums[i]); } for(int i = 0;i < nums.length;i++){ int temp = target - nums[i]; if(list.contains(temp) && (list.indexOf(temp) != i)){//避免当target-nums[i]=nums[i]时,选出的两个值为同一个元素 int k = list.indexOf(temp); index[0] = Math.min(i,k);//返回的索引是从小到大的 index[1] = Math.max(i,k); return index; } } if(index.length == 0) throw new IllegalArgumentException("No solution"); return index; }
由程序可以看出,该算法的时间复杂度最大为
阅读全文
1 0
- 1. Two Sum && 167. Two Sum II
- LeetCode 1. Two Sum
- [LeetCode]1.Two Sum
- LeetCode 1.Two Sum
- LeetCode --- 1. Two Sum
- 1.Two Sum
- [Leetcode] 1. Two Sum
- leetcode---1.Two sum
- 1.Two Sum
- [Leetcode] 1. Two Sum
- LeetCode 1.Two Sum
- 1. Two Sum
- 1. Two Sum
- 1. Two Sum Ruby
- LeetCode 1.Two Sum
- LeetCode 1.Two Sum
- 1. Two Sum
- 1.Two Sum
- C++学习(1)
- HDU1465 不容易系列之一
- Object...values可变参数和Object[] values区别
- 腾讯第一次面试
- 数据结构:堆Heap
- 1. Two Sum
- STL中的deque学习笔记
- POJ 3270 Cow Sorting(置换)
- JS如何判断分辨率不同,调用不同的CSS,不同的image文件夹
- C++学习(2)
- 设计模式之里氏代换原则
- 读前辈的大话设计模式(八)之模板方法模式,抒自己的读后感
- Unity3D服务器端使用PhysX计算物理
- Hadoop系列--Hadoop基本架构之HDFS架构