题目:(Java实现)给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
基本要求
示例:
- 可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
- 可以按任意顺序返回答案
代码实现
由于本人基础可能不是太好,所以参考了一下其他博主的方法,写出了一个最笨的方法,利用数组的遍历,仅供参考!!!
之后研究出更加优质的算法会及时分享滴,希望看到的小可爱们不要嫌弃噢~~~
public int[] twoSum(int[] nums, int target) {
int count = 0;
int temp = 0;
int[] array = new int[2]; //有两个元素,用来存储下标
//由于后面运算过程中,始终是第一个数和数组后面的数进行一一相加,然后与target进行比较
int[] sums2 = new int[nums.length - 1]; //一个数组中,一个元素不能运用两次
int[] sums3 = new int[nums.length - 1]; //一个数组中,一个元素不能运用两次
//遍历nums数组
for (int i = 1; i < nums.length; i++) {
int sum = nums[temp] + nums[i]; //
sums2[i - 1] = nums[i]; //把原来数组除了0下标正叙放在sum2数组中,防止一个元素被运用两次
//如果所得sum值等于题目要求的target值时,将下标分别存入array数组中,并返回数组。
while (sum == target) {
array[0] = temp;
array[1] = i;
return array;
}
}
count++;
//进行递归,重复上面的循环,直至找到对应的数
sums3 = twoSum(sums2, target);
for (int j = 0; j < sums3.length; j++) {
//由于上面定义数组时去掉了第一个数,所以此处重新定义时需要加上
sums3[j] = sums3[j] + count;
}
return sums3;
}