LeetCode
my_z_1234
想要努力变强的笨蛋莹,希望不会晚。
展开
-
【LeetCode】转置矩阵(JavaScript)
给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:matrix = [[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]这道题其实很简单,只要把相对应的位置上的数字交换就可以。/** * @param {number[]原创 2021-02-25 09:51:48 · 253 阅读 · 0 评论 -
【LeetCode】寻找峰值(JavaScript)
题目:峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入: nums = [1,2,1,3,5,6,4]输出: 1 或 5解释: 你的函数可以返回索原创 2020-09-16 16:03:27 · 112 阅读 · 0 评论 -
【LeetCode】翻转二叉树(JavaScript)
题目:翻转一棵二叉树。示例:方法一:递归法递归是最简单想到的,直接交换左右子树,然后依次递归到左右子树,继续上面的操作,直到左右子树都为空,就会返回翻转后的二叉树。/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} roo原创 2020-09-16 11:05:01 · 249 阅读 · 0 评论 -
【LeetCode】第一个错误的版本(JavaScript)
题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例:给定 n = 5,并且原创 2020-08-22 16:54:03 · 200 阅读 · 0 评论 -
【LeetCode】对称二叉树(JavaScript)
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。即其关于中间的线对称,左子树的左子节点等于右子树的右子节点,左子树的右子节点等于右子树的左子节点。递归法如果左右子树都为空,说明是对称的;如果只有一个子树为空,说明不对称;如果左右子树当前的值不相等,说明不相等。然后再递归求 p 的左子树与 q 的右子树,以及 p 的右子树与 q 的左子树。/** * Definition for a binary tree node. * function原创 2020-08-22 16:08:41 · 214 阅读 · 0 评论 -
【LeetCode】礼物的最大价值(JavaScript)
题目:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物这种就是使用动态规划,因为每一次的结果都靠前一次的结果。因为本题中只能向右或者向下移动一格,所以在下一步的原创 2020-08-20 14:04:19 · 293 阅读 · 0 评论 -
【LeetCode】从上到下打印二叉树(JavaScript)
题目:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7(20的两个子节点)返回:[3,9,20,15,7]这种题可以使用广度优先。使用模拟队列,将这一层的节点放入queue中,再依次取出queue中的每个值,放入res中,再将下一层的节点放入queue中。依次类推,当queue为空时,则遍历了所有的节点,返回res。时间复杂度O(N),空间复杂度O(N)。原创 2020-08-19 19:53:03 · 241 阅读 · 0 评论 -
【LeetCode】0~n-1中缺失的数字(JavaScript)
题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8直接遍历直接找到一个数值和数组下标不一样的位置,返回。时间复杂度O(N)。var missingNumber = function(nums) { for(var i=0;i<nums.lengt原创 2020-08-18 16:52:56 · 183 阅读 · 0 评论 -
【LeetCode】连续子数组的最大和(JavaScript)
题目:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题目要求时间复杂度O(N),不能暴力。可以考虑,记录前面的和,如果前一个和 <0 ,则直接抛弃它,使用自己的进行记录。每一次看这个和与最大值比较,取最大值。因为只关注前一个和与本身这个数值,所以可以使用两个变量存储这两个数。原创 2020-08-18 14:11:20 · 381 阅读 · 0 评论 -
【LeetCode】最小的k个数(JavaScript)
题目:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]可以直接用排序法,但是默认排序的是用字符串形式排序的,所以要用 arr.sort((a,b) => a-b) 来进行排序。时间复杂度O(NlogN)。如果这是你的最终结果肯定不行,必原创 2020-08-18 11:56:57 · 370 阅读 · 0 评论 -
【LeetCode】数组中出现次数超过一半的数字(JavaScript)
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2排序法直接排序后,选出出现次数最多的一个。时间复杂度O(NlogN),空间复杂度O(1)。var majorityElement = function(nums) { nums.sort(); var count = 1; for(var i=0;i<num原创 2020-08-17 20:18:51 · 413 阅读 · 0 评论 -
【LeetCode】调整数组顺序使奇数位于偶数前面(JavaScript)
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。在本题中,是不关注奇数顺序和偶数顺序的。因此,可以想到用双指针法,从前面找偶数并从后面找奇数,然后两数交换。时间复杂度O(N),空间复杂度O(1)。var exchange = function(nums) { var left = 0; var原创 2020-08-17 16:59:46 · 149 阅读 · 0 评论 -
【LeetCode】矩阵中的路径(JavaScript)
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行原创 2020-08-17 15:19:26 · 200 阅读 · 0 评论 -
【LeetCode】旋转数组的最小数字(JavaScript)
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0可以直接使用遍历,时间复杂度O(N)。但作为面试题,肯定还是要更简便的方法,不可能这么简单。因为是有序数组的旋转,所以可以使用二分法。但这里需要注意边界问题。如果 numb原创 2020-08-17 13:59:28 · 151 阅读 · 0 评论 -
【LeetCode】二维数组中的查找(JavaScript)
题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 t原创 2020-08-17 10:15:33 · 172 阅读 · 0 评论 -
【LeetCode】移动零(JavaScript)
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:1、必须在原数组上操作,不能拷贝额外的数组。2、尽量减少操作次数。方法一直接搜索非0值,将其覆盖在前面的值,然后剩余的就是0值。时间复杂度O(N),空间复杂度O(1)。var moveZeroes = function(nums) { var index = 0; //确定目前0的位置 for(v原创 2020-08-16 14:11:06 · 122 阅读 · 0 评论 -
【LeetCode】验证回文串(JavaScript)
题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false依旧是双指针的天堂。用两个指针,一个从前面开始,一个从后面开始,比较两个是不是相同,不相同就返回 false,最后返回 true。这里的关键是判断是否是字母和数字,因此可以使用正则表达式,选择不是字原创 2020-08-16 13:39:44 · 347 阅读 · 0 评论 -
【LeetCode】反转字符串(JavaScript)
题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]做多原创 2020-08-16 11:38:32 · 156 阅读 · 0 评论 -
【LeetCode】旋转数组(JavaScript)
题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向右旋转 1 步: [99,-1,-100,3]原创 2020-08-15 11:12:51 · 132 阅读 · 0 评论 -
【LeetCode】买卖股票的最佳时机II(JavaScript)
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格原创 2020-08-14 19:42:25 · 84 阅读 · 0 评论 -
【LeetCode】买卖股票的最佳时机(JavaScript)
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。示例 2:输入原创 2020-08-14 17:24:22 · 73 阅读 · 0 评论 -
【LeetCode】杨辉三角(JavaScript)
题目:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]直接暴力法先将每个子数组的前后两个赋值为1,然后中间的由前一个子数组的两个相加。var generate = function(numRows) { var arr = []; for(var i=0;i<numRows;i++)原创 2020-08-14 10:39:57 · 128 阅读 · 0 评论 -
【LeetCode】两两交换链表中的节点(JavaScript)
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.直接用两个指针交换对应的节点。单链表需要注意的是,小心将节点的 next 变化后找不到原来的 next 指向的位置。请读者按照代码的注释进行画图(应该容易画出来的),只要画出来了就很容易看懂的。加油ヾ(◍°∇°◍)ノ゙/** * Definition for s原创 2020-08-13 11:47:21 · 333 阅读 · 0 评论 -
【LeetCode】删除链表的倒数第N个节点(JavaScript)
题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?使用双指针法说是双指针,其实需要三个指针,两个用于遍历,一个用于返回。使用两个指针,一个快指针先移动(n+1)步,则两个指针中间有n个节点,然后一直让两个指针一起移动,直到快指针为空,原创 2020-08-13 11:35:24 · 315 阅读 · 0 评论 -
【LeetCode】合并两个有序链表(JavaScript)
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4设定一个头结点pre,并设定一个移动节点指针cur。当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到头结点 pre 里,当一个节点被添加到头结点里 pre 之后,将对应链表中的节点向后移一位,并移动移动节原创 2020-08-12 16:36:41 · 223 阅读 · 0 评论 -
【LeetCode】颜色填充(JavaScript)
题目:编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的横坐标为 sr 纵坐标为 sc。需要填充的新颜色为 newColor 。「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。示例:输入:image = [[1,1,1],[1,1,0],[1,0,1]]sr = 1, sc = 1, newColor = 2输出:[[2,2,2]原创 2020-08-12 15:12:59 · 469 阅读 · 0 评论 -
【LeetCode】二叉树的最大深度(JavaScript)
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \ 15 7(为20的两个节点)返回它的最大深度 3 。这种求深度的题目可以使用递归的方法求解。如果该节点为空,直接返回深度;如果不为空,递归其左右节点,再选择左右节点中最大的那个+1。时间复杂度O(N)。/** * Definition for a bi原创 2020-08-11 12:05:10 · 269 阅读 · 2 评论 -
【LeetCode】计数二进制子串(JavaScript)
题目:给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。可以先总结规律,对于每一个相邻的原创 2020-08-10 10:24:54 · 208 阅读 · 0 评论 -
【LeetCode】环形链表(JavaScript)
题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1(pos不给我们的)输出:true解释:链表中有一个环,其尾部连接到第二个节点。可以使用双指针法,快慢指针,如果是环,用快指针去追慢指针,快指针一定会追到慢指针,原因:把慢跑者视作参考系,这样来思考,慢跑者站着不动,快跑者速度为1,就会发现一定原创 2020-08-09 11:56:02 · 118 阅读 · 0 评论 -
【LeetCode】x的平方根(JavaScript)
题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。本题需要实现 sqrt 函数,肯定不能使用它!可以使用二分法,计算相乘的结果是否大于等于x,注意这里的 mid 要是右中间值(即+1)。时间复杂度O(logn),空间复杂度O(1)。v原创 2020-08-09 11:32:02 · 183 阅读 · 0 评论 -
【LeetCode】删除排序链表中的重复元素II(JavaScript)
题目:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3看到示例2,会把开头的链表删除,所以需要一个 pre 在 head 前。使用双指针法,slow 和 fast 。/** * Definition for singly-linked原创 2020-08-08 10:46:20 · 180 阅读 · 0 评论 -
【LeetCode】删除排序链表中的重复元素
题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3重复就将该位置的 next 指向 next.next,然后再接着比较,如果不重复,就移动目前指针的位置。var deleteDuplicates = function(head) { var p = head; while(p!=null &原创 2020-08-08 10:19:13 · 70 阅读 · 0 评论 -
【LeetCode】最后一个单词的长度(JavaScript)
题目:给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: “Hello World”输出: 5不存在最后一个单词的情况即为 “s==null || s.length==0”因此,解题方法就是从后往前遍历,如果最后一个位置是空格,则跳过,否则一直遍历到是空格就停止。var lengt原创 2020-08-08 10:03:46 · 186 阅读 · 0 评论 -
【LeetCode】颜色分类(JavaScript)
题目:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]方法一:暴力法直接通过两个 for 循环遍历数组,从 nums[0] 开始,选出一个最小的并且 <nums[i] 的数与其交换。时间复杂度O(N^2)。var s原创 2020-08-07 14:12:54 · 350 阅读 · 0 评论 -
【LeetCode】相同的树(JavaScript)
题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: (第一个树根节点1,左节点2,右节点3,第二个树同)[1,2,3], [1,2,3]输出: true本题可以使用递归,判断根节点是否相同,再依次判断左右节点是否相同。如果有一个树为空,则返回 false ,如果节点的值不相同,也返回 false 。如果递归到以该节点为根节点的两个树都为空,则两个树相同。时间复杂度O(min(m,n)),空间复杂度O(原创 2020-08-07 13:27:42 · 177 阅读 · 0 评论 -
【LeetCode】合并两个有序数组(JavaScript)
题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]首先,可以看到 nums1原创 2020-08-06 13:50:44 · 203 阅读 · 0 评论 -
【LeetCode】外观数列(JavaScript)
题目:给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1、12、113、214、12115、111221第一项是数字 1描述前一项,这个数是 1 即 “一个 1 ”,记作 11描述前一项,这个数是 11 即 “两个 1 ” ,记作 21描述前一项,这个数是 21 即 “一个 2 一个 1 ” ,记作 1211描述前一项,这个数原创 2020-08-06 11:43:02 · 210 阅读 · 0 评论 -
【LeetCode】爬楼梯(JavaScript)
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1、1 阶 + 1 阶2、 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1、1 阶 + 1 阶 + 1 阶2、 1 阶 + 2 阶3、2 阶 + 1 阶分析一下就可以知道本题是斐波那契数列,即 stair[n]=stair[n-1]+sta原创 2020-08-05 11:29:22 · 260 阅读 · 0 评论 -
【LeetCode】最接近的三数之和(JavaScript)
题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[i] <= 10^3-10^4 <原创 2020-08-05 10:27:46 · 149 阅读 · 0 评论 -
【LeetCode】三数之和(JavaScript)
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:输入: nums = [-1, 0, 1, 2, -1, -4],输出:[[-1, 0, 1],[-1, -1, 2]]可以使用for循环,将符合条件的放入数组后通过Set函数去重,但这种的复杂度较高,可能会超时。所以,解决这种问题,可以先排序,从头开始确定一个nums[i]原创 2020-08-04 19:54:49 · 271 阅读 · 0 评论