【数据结构和算法】两种方式解决
两数之和
http://www.nowcoder.com/questionTerminal/20ef0972485e41019e39543e8e895b7f
1,暴力破解法
就是使用两个for循环,这种效率很差
public int[] twoSum(int[] nums, int target) {
int length = nums.length;
for (int i = 0; i < length - 1; i++) {
for (int j = i + 1; j < length; j++)
if (nums[i] + nums[j] == target)
return new int[]{i+1, j+1};
}
return new int[]{-1, -1};
}
2,使用HashMap解决
public int[] twoSum(int[] nums, int target) {
Map<integer, integer> m = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (m.get(target - nums[i]) != null) {
return new int[]{m.get(target - nums[i])+1, i+1};
}
m.put(nums[i], i);
}
return new int[]{0, 0};
}
如果觉得有用就给个赞吧,还可以关注我的《牛客博客》查看更多的详细题解
数据结构和算法 文章被收录于专栏
专注于算法题的讲解,包含常见数据结构,排序,查找,动态规划,回溯算法,贪心算法,双指针,BFS和DFS等等。