三种不同解法带你感受leetcode第一题

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

引言

在 leetcode 刷题可以快速提高自己的技术水平但是在此之前需要你有扎实的基础和一定的数据结构和算法能力此专栏会以 JavaScript 出发对 leetcode 题进行详细的教学。在开始学习此专栏之前我们假设你已经拥有了扎实的 JavaScript 能力和对数据结构与算法有了一定的了解那么此专栏会锦上添花。希望每一位为了梦想奋斗的人都会被生活善待。

第一题两数之和

  • 给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那 两个 整数并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

  • 答案及解析

    • 思路一嵌套 for 循环利用嵌套 for 循环对每一种出现的可能性进行相加如果等于 target 则返回两个数的索引。

       /**
        * @param {number[]} nums
        * @param {number} target
        * @return {number[]}
        */
       var twoSum = function(nums, target) {
           for(let i = 0;i < nums.length;i++){
               for(let j = i + 1;j < nums.length;j++) {
                   if(nums[i] + nums[j] == target){
                       return [i, j];
                   }
               }
           }
       };
      
    • 思路二hash方法

       /**
          * @param {number[]} nums
          * @param {number} target
          * @return {number[]}
          */
         var twoSum = function(nums, target) {
             const map = new Map();
             for(let i = 0, len = nums.length;i < len;i++) {
                 if(map.has(target - nums[i])) {
                     return [map.get(target - nums[i]), i];
                 }
                 map.set(nums[i], i);
             }
             return [];
       };
      
    • 思路三indexOf() 查找下标在一个 for 循环中寻找 (target - nums[i]) 的值的索引如果有并且索引不指向它本身就是我们要找的索引值此时由 [i, targetIndex] 就是我们要得到的结果。

       /**
        * @param {number[]} nums
        * @param {number} target
        * @return {number[]}
        */
       var twoSum = function(nums, target) {
         var indexArr = [];
         for(var i = 0; i < nums.length; i++){
           var targetIndex = nums.indexOf(target - nums[i]);
           if(targetIndex != -1 && targetIndex !== i){
             indexarr=[i, targetIndex];
             break;
           }
         }
         return indexArr;
       };
      

我是与墨学长希望我连绵不断的分享可以在未来的某一天给你带来帮助。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6