随笔分类 - LeetCode
摘要:环形数组循环 给定一个含有正整数和负整数的环形数组nums,如果某个索引中的数k为正数,则向前移动 k个索引,相反如果是负数-k,则向后移动k个索引。因为数组是环形的,所以可以假设最后一个元素的下一个元素是第一个元素,而第一个元素的前一个元素是最后一个元素,确定nums中是否存在循环或周期。循环必须
阅读全文
摘要:除数博弈 爱丽丝和鲍勃一起玩游戏,他们轮流行动,爱丽丝先手开局。 最初,黑板上有一个数字N,在每个玩家的回合,玩家需要执行以下操作: 选出任一x,满足0 < x < N且N % x == 0。 用N - x替换黑板上的数字N。 如果玩家无法执行这些操作,就会输掉游戏。 只有在爱丽丝在游戏中取得胜利时
阅读全文
摘要:最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 示例 输入: ["flower","flow","flight"] 输出: "fl" 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 题解 //
阅读全文
摘要:常数时间插入、删除和获取随机元素 设计一个支持在平均时间复杂度O(1)下,执行以下操作的数据结构。 insert(val): 当元素val不存在时,向集合中插入该项。 remove(val): 元素val存在时,从集合中移除该项。 getRandom: 随机返回现有集合中的一项,每个元素应该有相同的
阅读全文
摘要:全排列II 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 题解 /** * @param {number[]} nums * @return {number[][]} */ var permu
阅读全文
摘要:两个数组的交集II 给定两个数组,编写一个函数来计算它们的交集。 示例 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 说明 输出结果中每个元素出现的次数,应与
阅读全文
摘要:路径总和 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例 给定如下二叉树,以及目标和sum = 22,返回true,因为存在目标和为22的根节点到叶子节点的路径5->4->11->2。 5 /
阅读全文
摘要:跳水板 你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例 输入: shorter = 1 longer = 2 k = 3 输
阅读全文
摘要:字母移位 有一个由小写字母组成的字符串S,和一个整数数组shifts。 我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的,z将会变成a)。 例如,shift('a') = 'b',shift('t') = 'u',以及shift('z') = 'a'。 对于每个shifts[i] =
阅读全文
摘要:长度最小的子数组 给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回0。 实例 输入: s = 7, nums = [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最
阅读全文
摘要:栈排序 栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek和isEmpty。当栈为空时,peek返回-1。 示例 输入: ["SortedStack", "push", "
阅读全文
摘要:矩阵置零 给定一个m x n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。请使用原地算法。 示例 输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ] 输入: [ [0,1,2,0], [3,4,5,2
阅读全文
摘要:顶端迭代器 给定一个迭代器类的接口,接口包含两个方法:next()和hasNext()。设计并实现一个支持peek()操作的顶端迭代器--其本质就是把原本应由next()方法返回的元素peek()出来。 示例 假设迭代器被初始化为列表 [1,2,3]。 调用 next() 返回 1,得到列表中的第一
阅读全文
摘要:二进制求和 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字1和0。 示例 输入: a = "11", b = "1" 输出: "100" 输入: a = "1010", b = "1011" 输出: "10101" 提示 每个字符串仅由字符'0'或'1'组成。
阅读全文
摘要:括号生成 数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。 示例 输入:n = 3 输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ] 题解 /** * @param {number} n * @ret
阅读全文
摘要:全排列 给定一个没有重复 数字的序列,返回其所有可能的全排列。 示例 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 题解 /** * @param {number[]} nums * @return
阅读全文