- 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
package com.qianfeng.day05;
public class Test {
public static void main(String[] args) {
int[] nums = new int[] {2,7,11,15};
int args1 = 13;
Solution solution = new Solution();
int[] nums1 = solution.twoSum(nums, args1);
for (int i = 0; i < nums1.length; i++) {
System.out.println(nums1[i]);
}
}
}
class Solution {
public int[] twoSum(int[] nums, int target) {
int subtrahend = 0; //减数
int i;
int j = 0; //i,j为循环变量
for (i = 0; i < nums.length; i++) {
subtrahend = target - nums[i];
for (j = 0; j < nums.length; j++) {
if(nums[j] == subtrahend && i != j) {
break;
}
}
if (j != nums.length) {
break;
}
}
return new int[] {i,j};
}
}
主要算法思想:
在此题中,需要返回数组的两个下标,这两个下标分别代表被减数和减数,
那么就可这样理解,首先用目标数减去数组中的某个数,得到了一个数,然后用这个数在数组中去寻找,只要找到了那么就是这个数,而且为了防止两个数相同,需要通过if-else去判断一下两个下标不能相等,然后又通过break,返回两次循环,第一次是找到第二个数,第二次退出循环是判断第二次循环是否找到了最后一个都没有找到,如果不是最后一个,那么就说明找到了这个数,然后直接退出循环。