← 所有标签
共 108 篇文章
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
给你一个链表数组,每个链表都已经按升序排列。
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。
给定两个字符串 s 和 t,长度分别是 m 和 n,返回 s 中的 最短窗口 子串,使得该子串包含 t 中的每一个字符(包括重复字符)。如果没有这样的子串,返回空字符串 ""。
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
LeetCode 刷题中常用的数据结构定义模板,包含 ListNode、TreeNode、TrieNode、UnionFind 等 17 种常见结构及其使用场景。
整理 LeetCode 常用算法模板:双指针、滑动窗口、二分查找、前缀和、回溯、动态规划等。
Java代码实例:
几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。
给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。
在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:
给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, e
给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 "ababcc" 能够被分为 ["
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
给你一棵二叉树的根节点,返回该树的 直径 。
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。
给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
给定一个经过编码的字符串,返回它解码后的字符串。
给定两个数组 nums1 和 nums2,返回它们的交集。
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。
[240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/)
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每
[238. 除了自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-excep
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(k 从 1 开始计数)。
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j]
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
[Trie](https://baike.baidu.com/item/%E5%AD%97%E5%85%B8%E6%A0%91/982520
你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻
[189. 轮转数组](https://leetcode.cn/problems/rotate-array/)
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
请你设计并实现一个满足 [LRU (最近最少使用) 缓存](https://baike.baidu.com/item/LRU) 约束的数据
[142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/)
给你一个链表的头节点 head ,判断链表中是否有环。
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。
给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
给你二叉树的根结点 root ,请你将它展开为一个单链表:
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历
给定一个二叉树 root ,返回其最大深度。
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
思路: 一棵树轴对称,等价于它的左右子树互为镜像。定义 check(p, q) 判断两棵子树是否镜像:若两者都为空则对称;若只有一个为空则不
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 f
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,[原地](https://baike.baidu.com/item/%E5%
给你一个满足下述两条属性的 m x n 整数矩阵:
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 [原地](http://baike.ba
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为 更加简洁的规范路径。
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
[54. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
给你一个字符串数组,请你将 字母异位词(字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次)组合在一起。可
[48. 旋转图像](https://leetcode.cn/problems/rotate-image/)
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
[45. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/)
[41. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/)
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
整数数组 nums 按升序排列,数组中的值 互不相同 。
整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
给你一个字符串 s,找到 s 中最长的 回文子串。
给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数