Algorithm
Two Sum
解法一: 暴力循环
1
2
3
4
5
6
7
8
9
10
11
12
13class Solution {
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length - 1; i++) {
int temp = target - nums[i];
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] == temp) {
return new int[]{i, j};
}
}
}
return null;
}
}执行耗时: 17ms, 内存消耗: 37.4MB
解法二: 借助 map
1
2
3
4
5
6
7
8
9
10
11
12
13class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap(nums.length);
for (int i = 0; i < nums.length; i++) {
Integer value = map.get(nums[i]);
if (null != value) {
return new int[]{value, i};
}
map.put(target - nums[i], i);
}
return null;
}
}执行耗时: 2ms, 内存消耗: 37.4MB
Review
How to think like a programmer — lessons in problem solving
文章介绍了一种解决问题的有效框架:
Tip
crossoverJie/blog.toolbox - 博客工具箱
因为之前使用的博客图床挂掉了, 所以选用这个工具批量替换了图床. 纯 Java 代码, 需要自定义的地方可以自己实现.
Share
分享一些自己喜欢的 Windows 软件: Windows 软件推荐