两数之和

 

两数之和

给定一个整数数组 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,则会重复抽出之前的值。
 

 

posted @ 2022-11-12 11:47  ikun、  阅读(31)  评论(0编辑  收藏  举报