LeetCode
瓜冬瓜
我想找份实习,额啊~
展开
-
LeetCode(2)——两数相加(JavaScript)
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ->...原创 2019-06-23 15:25:33 · 681 阅读 · 0 评论 -
★LeetCode(292)——Nim 游戏(JavaScript)
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 块石头,最后一...原创 2019-06-27 15:09:37 · 274 阅读 · 0 评论 -
★LeetCode(942)——增减字符串匹配(JavaScript)
给定只含 "I"(增大)或 "D"(减小)的字符串 S,令 N = S.length。返回[0, 1, ..., N] 的任意排列 A 使得对于所有 i = 0, ..., N-1,都有:如果 S[i] == "I",那么 A[i] < A[i+1]如果 S[i] == "D",那么 A[i] > A[i+1]示例1:输出:“IDID”输出:[0,4,1,3,2]示...原创 2019-06-27 01:15:52 · 219 阅读 · 0 评论 -
LeetCode(1051)——高度检查器(JavaScript)
学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。输入:[1,1,4,2,1,3]输出:3解释:高度为 4、3 和最后一个 1 的学生,没有站在正确的位置。提示:1 <= heights.length <= 1001 <= heights...原创 2019-06-26 23:47:32 · 193 阅读 · 0 评论 -
LeetCode(461)——汉明距离(JavaScript)
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。/** * @param {s...原创 2019-06-26 23:37:04 · 188 阅读 · 0 评论 -
LeetCode(977)——有序数组的平方(JavaScript)
给定一个按非递减顺序排序的整数数组A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= A.length <= 100002.-10000 <= A[i] <= 10000A ...原创 2019-06-26 23:02:47 · 282 阅读 · 0 评论 -
★LeetCode(17)——电话号码的字母组合(JavaScript)
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。/** * @param {s...原创 2019-06-25 21:48:37 · 297 阅读 · 0 评论 -
LeetCode(657)——机器人能否返回原点(JavaScript)
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向...原创 2019-06-25 19:12:53 · 174 阅读 · 0 评论 -
LeetCode(771)——宝石与石头(JavaScript)
给定字符串J 代表石头中宝石的类型,和字符串S代表你拥有的石头。S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。实例1:输入: J = “aA”, S = “aAAbbbb”输出: 3实例2:输入: J = “z”, S = “ZZ”输出: 0...原创 2019-06-25 17:06:43 · 214 阅读 · 0 评论 -
LeetCode(804)——唯一摩尔斯密码词(JavaScript)
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应".-", "b" 对应 "-...","c" 对应 "-.-.", 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-…","-.-.","-…",".","…-.","–.","…","…",".—","-.-",".-…","–","-.","—",".–....原创 2019-06-25 16:55:36 · 139 阅读 · 0 评论 -
LeetCode(832)——翻转图像(JavaScript)
给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是[0, 1, 1]。反转图片的意思是图片中的 0全部被 1替换, 1全部被 0替换。例如,反转[0, 1, 1] 的结果是 [1, 0, 0]。示例1:输入: [[1,1,0],[1,0,1],[0,0,0]]输出: [[1...原创 2019-06-25 16:37:34 · 121 阅读 · 0 评论 -
LeetCode(1021)——删除最外层的括号(JavaScript)
有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。给出一个非空有效字符串 ...原创 2019-06-25 11:44:18 · 749 阅读 · 0 评论 -
LeetCode(709)——转换成小写字母(JavaScript)
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例1:输入: “Hello”输出: “hello”示例2:输入: “here”输出: “here”示例3:输入: “LOVELY”输出: “lovely”/** * @param {string} str * @return {s...原创 2019-06-25 11:24:45 · 141 阅读 · 0 评论 -
(进阶)LeetCode(338)——比特位计数(JavaScript)
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O...原创 2019-06-24 17:44:23 · 185 阅读 · 0 评论 -
LeetCode(500)——键盘行(JavaScript)
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。示例:输入: [“Hello”, “Alaska”, “Dad”, “Peace”]输出: [“Alaska”, “Dad”]注意:你可以重复使用键盘上同一字符。你可以假设输入的字符串将只包含字母。/** * @param {string[]} words * @return {strin...原创 2019-06-24 16:10:23 · 167 阅读 · 0 评论 -
LeetCode(237)——删除链表中的节点(JavaScript)
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例2:输入...原创 2019-06-24 15:41:19 · 742 阅读 · 0 评论 -
LeetCode(1)——两数之和(JavaScript)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]/** * @p...原创 2019-06-23 15:51:16 · 120 阅读 · 0 评论 -
LeetCode(1089)——复写零(JavaScript)
给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。示例1:输入:[1,0,2,3,0,4,5,0]输出:null解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]示例2:输入:[1,2,3]输出...原创 2019-08-01 01:53:37 · 131 阅读 · 0 评论 -
LeetCode(530)——二叉搜索树的最小绝对差(JavaScript)
给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值。示例:输入:输出:1解释:最小绝对差为1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。注意: 树中至少有2个节点。/** * Definition for a binary tree node. * function TreeNode(val) { * this.val =...原创 2019-07-29 22:09:24 · 221 阅读 · 0 评论 -
LeetCode(100)——相同的树(JavaScript)
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入:输出: true示例2:输入:输出: false示例3:输入:输出: false/** * Definition for a binary tree node. * function TreeNode(val) { * ...原创 2019-07-29 21:51:05 · 133 阅读 · 0 评论 -
LeetCode(447)——回旋镖的数量(JavaScript)
给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:输入:[[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0,0],[2...原创 2019-07-29 20:33:22 · 181 阅读 · 0 评论 -
LeetCode(1137)——第 N 个泰波那契数(JavaScript)
泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例2:输入:n = 25输出:138953...原创 2019-07-29 18:43:04 · 160 阅读 · 0 评论 -
LeetCode(748)——最短完整词(JavaScript)
如果单词列表(words)中的一个单词包含牌照(licensePlate)中所有的字母,那么我们称之为完整词。在所有完整词中,最短的单词我们称之为最短完整词。单词在匹配牌照中的字母时不区分大小写,比如牌照中的 "P" 依然可以匹配单词中的 "p"字母。我们保证一定存在一个最短完整词。当有多个单词都符合最短完整词的匹配条件时取单词列表中最靠前的一个。牌照中可能包含多个相同的字符,比如说:对于牌...原创 2019-07-29 05:51:41 · 154 阅读 · 0 评论 -
★LeetCode(196)——删除重复的电子邮箱(MySQL)
编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。IdEmail1john@example.com2bob@example.com3john@example.comId是这个表的主键。例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:IdEmail1...原创 2019-07-29 04:39:47 · 236 阅读 · 0 评论 -
LeetCode(122)——买卖股票的最佳时机 II(JavaScript)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获...原创 2019-07-29 04:18:59 · 246 阅读 · 0 评论 -
LeetCode(705)——设计哈希集合(JavaScript)
不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:MyHashSet hashSet = new MyHashSet();hashSet.add(...原创 2019-07-29 03:23:41 · 171 阅读 · 0 评论 -
LeetCode(953)——验证外星语词典(JavaScript)
某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。示例1:输入:words = [“hello”,“leetcode”], order = “hlabcdefgijkmnopq...原创 2019-07-29 03:10:58 · 201 阅读 · 0 评论 -
LeetCode(706)——设计哈希映射(JavaScript)
不使用任何内建的哈希表库设计一个哈希映射具体地说,你的设计应该包含以下的功能put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。remove(key):如果映射中存在这个键,删除这个数值对。示例:MyHashMap hashMap = new MyHas...原创 2019-07-29 02:52:30 · 301 阅读 · 0 评论 -
★LeetCode(538)——把二叉搜索树转换为累加树(JavaScript)
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。示例1:输入: 二叉搜索树:输出: 转换为累加树:/** * Definition for a binary tree node. * function TreeNode(val) { * this.va...原创 2019-07-29 02:45:40 · 199 阅读 · 0 评论 -
★LeetCode(812)——最大三角形面积(JavaScript)
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。示例1:输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]输出: 2解释:这五个点如下图所示。组成的橙色三角形是最大的,面积为2。注意:3 <= points.length <= 50.不存在重复的点。-50 <= points[i][j]...原创 2019-07-28 22:41:28 · 117 阅读 · 0 评论 -
★LeetCode(784)——字母大小写全排列(JavaScript)
给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。示例1:输入: S = “a1b2”输出: [“a1b2”, “a1B2”, “A1b2”, “A1B2”]输入: S = “3z4”输出: [“3z4”, “3Z4”]输入: S = “12345”输出: [“12345”]注意:S 的长度不超过12。S 仅...原创 2019-07-28 20:21:21 · 240 阅读 · 0 评论 -
LeetCode(257)——二叉树的所有路径(JavaScript)
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3/** * Definition for a binary tree node. * function TreeNode(val)...原创 2019-07-28 03:41:37 · 626 阅读 · 0 评论 -
LeetCode(897)——递增顺序查找树(JavaScript)
给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例:输入:[5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]提示:给定树中的结点数介于 1 和 100 之间。每个...原创 2019-07-28 03:14:49 · 105 阅读 · 0 评论 -
LeetCode(872)——叶子相似的树(JavaScript)
请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。提示:给定的两颗树可能会有 1 到 10...原创 2019-07-28 03:03:06 · 134 阅读 · 0 评论 -
LeetCode(1103)——分糖果 II(JavaScript)
排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。重复上述过程(每次都比上一次多给出一颗...原创 2019-07-28 02:40:10 · 119 阅读 · 0 评论 -
LeetCode(235)——二叉搜索树的最近公共祖先(JavaScript)
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例1:输入: root = [6,2...原创 2019-07-28 02:23:14 · 199 阅读 · 0 评论 -
LeetCode(637)——二叉树的层平均值(JavaScript)
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例:输入:输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意:节点值的范围在32位有符号整数范围内。/** * Definition for a binary tree node. * function Tree...原创 2019-07-27 23:30:06 · 199 阅读 · 0 评论 -
LeetCode(107)——二叉树的层次遍历 II(JavaScript)
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]/** * Definition for a binary tree node. * function TreeNode(val) ...原创 2019-07-27 22:44:33 · 249 阅读 · 0 评论 -
LeetCode(1122)——数组的相对排序(JavaScript)
给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]...原创 2019-07-27 20:47:08 · 188 阅读 · 0 评论 -
★LeetCode(669)——修剪二叉搜索树(JavaScript)
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例1:示例2:/** * Definition for a binary tree node. * function TreeNode(val) { * thi...原创 2019-07-27 20:35:43 · 155 阅读 · 0 评论