随笔分类 - LeetCode
摘要:两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 输入:head = [1,2,3,4] 输出:[2,1,4,3] 输入:head = [] 输出:[] 输入:head = [1] 输出:[1] 题
阅读全文
摘要:反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。 你可以假设数组中的所有字符都是ASCII码表中的可打印字符。 示例 输入:["h","e","l","
阅读全文
摘要:宝石与石头 给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此a和A是不同类型的石头。 示例 输入: J = "aA", S = "aAAbb
阅读全文
摘要:二叉搜索树中的众数 给定一个有相同值的二叉搜索树BST,找出BST中的所有众数(出现频率最高的元素)。 假定BST有如下定义: 结点左子树中所含结点的值小于等于当前结点的值。 结点右子树中所含结点的值大于等于当前结点的值。 左子树和右子树都是二叉搜索树。 示例 给定BST [1,null,2,2],
阅读全文
摘要:子集 给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 题解 /** * @param
阅读全文
摘要:翻转二叉树 翻转一棵二叉树。 示例 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 题解 /** * Definition for a binary tree node. * function TreeNode(val) { *
阅读全文
摘要:组合 给定两个整数n和k,返回1 ... n中所有可能的k个数的组合。 示例 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 题解 /** * @param {number} n * @param {number}
阅读全文
摘要:二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历。 示例 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回其自底向上的层次遍历为 [ [15,7], [9,20],
阅读全文
摘要:二叉树的所有路径 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例 输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 题解 /** * Definit
阅读全文
摘要:使括号有效的最少添加 给定一个由(和)括号组成的字符串S,我们需要添加最少的括号(或是),可以在任何位置,以使得到的括号字符串有效。 从形式上讲,只有满足下面几点之一,括号字符串才是有效的: 它是一个空字符串。 它可以被写成AB,即A与B连接, 其中A和B都是有效字符串。 它可以被写作(A),其中A
阅读全文
摘要:电话号码的字母组合 给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下,即与电话按键相同。注意1不对应任何字母。 示例 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 尽管上面
阅读全文
摘要:平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true。 给定二叉树 [1,2,
阅读全文
摘要:二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例 给定二叉树[3,9,20,null,null,15,7]。 3 / \ 9 20 / \ 15 7 题解 /** * Definition fo
阅读全文
摘要:叶子相似的树 请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个叶值序列。 示例 举个例子,如上图所示,给定一颗叶值序列为(6, 7, 4, 9, 8)的树。 如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是叶相似的。 如果给定的两个头结点分别为root1和root2的树是
阅读全文
摘要:提莫攻击 在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。 你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。 示例 输入: [1
阅读全文
摘要:数组中的第K个最大元素 在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。 示例 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 题解 /** *
阅读全文
摘要:被围绕的区域 给定一个二维的矩阵,包含X和O。 找到所有被X围绕的区域,并将这些区域里所有的O用X填充。 被围绕的区间不会存在于边界上,换句话说,任何边界上的O都不会被填充为X。任何不在边界上,或不与边界上的O相连的O最终都会被填充为X。如果两个元素在水平或垂直方向相邻,则称它们是相连的。 示例 X
阅读全文
摘要:一次编辑 字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。 示例 输入: first = "pale" second = "ple" 输出: True 输入: first = "pales" second = "p
阅读全文
摘要:有效的括号字符串 给定一个只包含三种字符的字符串:(、)和*,写一个函数来检验这个字符串是否为有效字符串,有效字符串具有如下规则: 任何左括号(必须有相应的右括号)。 任何右括号)必须有相应的左括号(。 左括号(必须在对应的右括号之前)。 *可以被视为单个右括号),或单个左括号(,或一个空字符串。
阅读全文
摘要:字符串相加 给定两个字符串形式的非负整数num1和num2,计算它们的和。 注意: num1和num2的长度都小于5100。 num1和num2都只包含数字0-9。 num1和num2都不包含任何前导零。 你不能使用任何內建BigInteger库,也不能直接将输入的字符串转换为整数形式。 示例 输入
阅读全文