数组里查找目标值

271 阅读1分钟

给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的两个整数,并返回他们在数组中的下标。

1、双重for循环

思路:双重for循环---第一层for循环,获取target与nums[i]之间的差值diff,再进行第二次循环,将差值(diff)与nums[j]进行比对,完全相等时,那么nums[i]与nums[j]和为target,数组下标为[i,j]

例:

   function getTarget(nums,target) {
     for(let i = 0;i < nums.length; i++) {
       var diff = target - nums[i]
       for(let j = i+1;j < nums.length; j++) {        //避免i与j一样
         if(nums[j] === diff) {
            return [i,j]
         }
       }
     }
   }
   
   var arr = [3,2,4]
   console.log(getTarget(arr,6));               //[1,2]
2、indexOf

思路:利用indexOf查找不到返回-1的特性

   function getTarget(nums,target) {
     for(let i = 0 ;i < nums.length; i++) {
       if(nums.indexOf(target - nums[i]) > -1) {
         return [i,nums.indexOf(target - nums[i])]
       }
     }
   }
   
   var arr = [3,2,4]
   console.log(getTarget(arr,6));               //[1,2]