返回

js的LeetCode之路1——“两数之和”与“斐波拉契数列”

前端

前言

欢迎来到JS LeetCode之路系列文章!在这个系列中,我们将一起学习LeetCode上的各种算法和编程题目,从最基本的入门题到更具挑战性的高级题,逐步提升我们的算法和编程能力。

在第一篇中,我们将学习两道经典的LeetCode题目——“两数之和”和“斐波拉契数列”。这两道题都是入门级的题目,非常适合新手学习,能够帮助我们掌握基本的算法和编程技巧。

两数之和

题目

给定一个整数数组nums和一个目标值target,找出数组中两数之和等于target的索引。你可以假设每个输入只对应一种解决方案,且同样的元素不能被重复利用。

解题思路

这道题的解法有很多种,最简单的一种是暴力枚举。我们可以使用两个循环遍历数组,并在每次循环中检查当前元素与其他元素之和是否等于target。如果相等,则返回这两个元素的索引。

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
const twoSum = (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];
      }
    }
  }

  return [];
};

斐波拉契数列

题目

斐波拉契数列(Fibonacci sequence)是一种非常著名的数列,它的特点是每个数都是前两个数之和。斐波拉契数列的前几个数是:0、1、1、2、3、5、8、13、21、34、55、89、144、...。

给定一个整数n,请输出斐波拉契数列的前n项。

解题思路

这道题的解法也很简单,我们可以使用循环或递归来生成斐波拉契数列。

/**
 * @param {number} n
 * @return {number[]}
 */
const fibonacci = (n) => {
  if (n <= 0) {
    return [];
  }

  if (n === 1) {
    return [0];
  }

  if (n === 2) {
    return [0, 1];
  }

  const fibSequence = [0, 1];

  for (let i = 2; i < n; i++) {
    fibSequence[i] = fibSequence[i - 1] + fibSequence[i - 2];
  }

  return fibSequence;
};

结语

以上就是LeetCode之路系列文章的第一篇,我们学习了两道经典的LeetCode题目——“两数之和”和“斐波拉契数列”。通过这两道题,我们掌握了基本的算法和编程技巧,为接下来的学习打下了坚实的基础。

在接下来的文章中,我们将继续学习更多的LeetCode题目,逐步提升我们的算法和编程能力。敬请期待!