Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
这个题目是Leetcode的第一题,对于博主这个菜鸟来说还算是挺简单的,主要就是控制一下循环就可以完成;
根据题意要求,我们需要在这个int[ ] 数组里面找到两个不同的数字使得他们的和==target 目标值
并返回这两个数字在int数组中的位置;
所以不要考虑自己与自己想加的情况 [2,7,11,15] 的target 目标值不可能是 4,14,22,30的这种情况;
所以通过我的这个解法可以减少 (n+1)/2 次无效循环次数;
class Solution {
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j]+nums[i]==target) {
return new int[] { i, j };
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
当然了这个其实似乎不是最优解法;
目前也是刚开始刷题,算法课下个学期才开始上,各位如果有更加快速的思路或者是有疑问的话可以在下方留言