随手记录点算法~
在线算法地址LeetCode
算法
Two Sum
问题: 给定一数组与一个期望值, 获取期望值可由数组中哪两个值相加得到.
示例: 输入: nums=[2, 7, 11, 15], target = 9; 输出: [0, 1]
分析: 以下实现的时间复杂度为O(n), 空间复杂度O(n)
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}