两数之和
两数之和
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 :
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
解法:暴力法
解题思路:按顺序抽出所有数组两两进行运算,若nums[i]+numsr[n]=target(n<nums.length),则输出下标,组成数组[i,n]。
代码:
import java.util.Scanner;
class Solution {
public int[] twoSum(int[] nums, int target) {
//定义输出的数组length
int[] arr=new int[2] ;
//第一个循环:第一次循环开始,抽出的第一个值为nums[0],第二个循环开始,
for (int i = 0; i < nums.length; i++) {
//第二个循环:在第一次循环nums[0]条件下,抽出所有nums[0<j<nums.length]值
//与nums[0]操作,操作结束后,返回第一个循环,直到第一个循环彻底结束,程序结束。
for (int j = i+1; j <nums.length; j++) {
//两个nums[]的之间操作,若nums[i]+nums[j]=给定的目标值,把这两个值所对应数组的下表,
//填入自己定义的数组里面,达到输出为[0,1]的效果。
if (nums[i]+nums[j]==target){
arr[0]=i;
arr[1]=j;
break;
}
}
return arr;
}
}
测试用例:
输入:nums = [3,7,12,6], target = 9
输出:[0,3]
性能(不足):
执行用时: 41 ms
内存消耗: 41.6 MB
本题细节:
第9行for循环条件若为 j=0,则会重复抽出之前的值。