leetcode第一题三种不同的解法

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

leetcode第一题三种不同的解法


引言


在 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;
 };

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

相关文章
|
7月前
|
算法
代码随想录 Day11 二叉树 LeetCode T144,145,94 前中后序遍历 (递归解法)
代码随想录 Day11 二叉树 LeetCode T144,145,94 前中后序遍历 (递归解法)
25 0
|
4月前
|
算法 索引
Leetcode算法系列| 1. 两数之和(四种解法)
Leetcode算法系列| 1. 两数之和(四种解法)
|
10月前
|
存储 机器人 C++
leetcode 每日一题 874. 模拟行走机器人 c++模拟解法
简单来说就是机器人在一个矩阵上移动 我们要找到一个离原点的一个最大欧式距离的平方
96 0
|
5月前
|
开发者 索引 Python
【python刷题】LeetCode 2057E 值相等的最小索引(5种简单高效的解法)
【python刷题】LeetCode 2057E 值相等的最小索引(5种简单高效的解法)
26 0
|
6月前
|
C语言
力扣 LCR 024. 反转链表两种解法
C语言实现的代码解题思路
45 1
|
6月前
力扣 203.移除链表元素第二种解法
力扣 203.移除链表元素第二种解法
16 0
|
6月前
|
索引
力扣 506.相对名词 纯C解法
力扣 506.相对名词 纯C解法
|
10月前
|
算法
(C语言版)力扣(LeetCode)27.移除元素三种解法分析
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
|
10月前
|
算法
(C语言版)力扣(LeetCode)189. 轮转数组官方3种解法分析
尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
|
10月前
|
算法
(C语言版)力扣(LeetCode)面试题 17.04. 消失的数字5种解法
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?

热门文章

最新文章