leetcode
文章平均质量分 50
别摸我的键盘
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指 Offer II 002. 二进制加法 模拟法
文章目录1.问题描述2.测试用例示例 1示例23.提示4.代码1.模拟法1.问题描述给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。2.测试用例示例 1输入: a = "11", b = "10"输出: "101"示例2输入: a = "1010", b = "1011"输出: "10101"3.提示每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length原创 2022-03-02 15:59:35 · 275 阅读 · 0 评论 -
剑指 Offer II 001. 整数除法 减法&&位运算
文章目录1.问题描述2.测试用例示例 1示例2示例3示例43.提示4.代码1.减法思路2.位运算1.问题描述给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。注意:整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231−1]。本题中,如果除法结果溢出,则返回原创 2022-03-01 13:50:27 · 618 阅读 · 0 评论 -
Leetcode NO.297 Serialize And Deserialize Binary Tree
文章目录1.问题描述2.测试用例示例 1示例2示例3示例43.提示4.代码1.DFS序列化 二叉树code复杂度1.问题描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示: 输入输出格式与 Le原创 2022-01-27 20:57:56 · 200 阅读 · 0 评论 -
Leetcode NO.17 Letter Combinations Of_A_Phone Number 电话号码的字母组合
文章目录1.问题描述2.测试用例示例 1示例2示例33.提示4.代码1.电话号码的字母组合-回溯code复杂度1.问题描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。2.测试用例示例 1输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例2输入:digits = ""输出:[]示例3原创 2022-01-24 17:49:15 · 329 阅读 · 0 评论 -
Leetcode NO.46 Permutations 全排列
文章目录1.问题描述2.测试用例示例 1示例2示例33.提示4.代码1.全排列-回溯code复杂度1.问题描述给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。2.测试用例示例 1输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2输入:nums = [0,1]输出:[[0,1],[1,0]]示例3输入:nums = [1]输出:[[1]]原创 2022-01-21 17:13:39 · 492 阅读 · 0 评论 -
Leetcode NO.322 Coin Change 零钱兑换
文章目录1.问题描述2.测试用例示例 1示例2示例3示例4示例53.提示4.代码1.动态规划code复杂度1.问题描述给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。2.测试用例示例 1输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1示例2输入:原创 2022-01-20 12:02:12 · 373 阅读 · 0 评论 -
Leetcode NO.198 House Robber 打家劫舍
文章目录1.问题描述2.测试用例示例 1示例23.提示4.代码1.动态规划code复杂度2.动态规划空间优化code复杂度1.问题描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。2.测试用例示例 1输入:[1,2,3,1]输出:4解释:偷窃 1 号原创 2022-01-19 10:54:51 · 226 阅读 · 0 评论 -
Leetcode NO.1143 Longest Common Subsequence 最长公共子序列
文章目录1.问题描述2.测试用例示例 1示例2示例33.提示4.代码1.动态规划code复杂度1.问题描述给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任 何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列原创 2022-01-16 21:58:55 · 214 阅读 · 0 评论 -
Leetcode NO.70 Climbing Stairs 爬楼梯
文章目录1.问题描述2.测试用例示例 1示例23.代码1.斐波拉契数列&Dpcode复杂度2.数学-斐波拉契数列通项式code1.问题描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。2.测试用例示例 1输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例2输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶原创 2022-01-14 23:05:12 · 329 阅读 · 0 评论 -
Leetcode NO.121 Best Time To Buy And Sell Stock 买卖股票时间
文章目录1.问题描述2.测试用例示例 1示例 23.提示4.代码1.暴力code复杂度2.动态规划code复杂度1.问题描述给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。2.测试用例示例 1输入:[7,1,5,3,6,4]输出:5解释:在第原创 2022-01-11 16:01:11 · 172 阅读 · 0 评论 -
Knapsack Problem 0-1 背包问题
文章目录1.描述2.代码1.动态规划code复杂度2.动态规划&空间优化code复杂度1.描述【0-1背包问题】有一个背包,容量是W=120,有7个物品,物品不可分割。要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。物品: A B C D E F G重量:30 30 60 55 40 10 25价值:10 40 30 50 35 40 302.代码1.动态规划codepublic int knapsackWithDp(int capac原创 2022-01-06 23:25:44 · 591 阅读 · 0 评论 -
Leetcode NO.509 Fibonacci Number 斐波那契数
文章目录1.问题描述2.测试用例示例 1示例 2示例 33.提示4.代码1.递归code复杂度2.动态规划code复杂度1.问题描述斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你 n ,请计算 F(n) 。2.测试用例示例 1输入:2输出:1解释:F(2) = F原创 2022-01-05 23:26:18 · 363 阅读 · 0 评论 -
Leetcode NO.55 Jump Game 跳跃游戏
文章目录1.问题描述2.测试用例示例 1示例23.提示4.代码1.贪心循环code复杂度1.问题描述给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。2.测试用例示例 1输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例2输入:nums = [3,2,1,0,4]输出:false原创 2021-12-28 23:06:20 · 1514 阅读 · 0 评论 -
Leetcode NO.98 Validate Binary Search Tree 验证二叉搜索树
文章目录1.问题描述2.测试用例示例 1示例23.提示4.代码节点信息1.基于前序遍历思路code复杂度2.基于中序遍历思路code复杂度1.问题描述你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。2.测试用例示例 1输入:root = [2,1,3]输出:true示例2输入:root = [5,1,4,nu原创 2021-12-27 17:49:04 · 350 阅读 · 0 评论 -
Leetcode NO.110 Balanced Binary Tree 平衡二叉树
文章目录1.问题描述2.测试用例示例 1示例2示例33.提示4.代码1.自顶向下code复杂度2.自底向上code复杂度1.问题描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。2.测试用例示例 1输入:root = [3,9,20,null,null,15,7]输出:true示例2输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例3输入原创 2021-12-26 23:27:08 · 248 阅读 · 0 评论 -
Leetcode NO.226 Invert Binary Tree 翻转二叉树
文章目录1.问题描述2.测试用例示例 13.代码1.前序反转code复杂度2.后序反转code复杂度1.问题描述翻转一棵二叉树。2.测试用例示例 1输入: 4 / \ 2 7 / \ / \1 3 6 9 输出: 4 / \ 7 2 / \ / \9 6 3 13.代码1.前序反转codepublic TreeNode invertTreeWithPreOrder(TreeNode原创 2021-12-25 23:51:39 · 501 阅读 · 0 评论 -
Leetcode NO.56 Merge Intervals 合并区间
文章目录1.问题描述2.测试用例示例 1示例 23.提示4.代码1.首元素排序合并code复杂度1.问题描述以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。2.测试用例示例 1输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]示例 2输入:i原创 2021-12-22 23:34:57 · 206 阅读 · 0 评论 -
Leetcode NO.75 Sort Colors 颜色分类
文章目录1.问题描述2.测试用例示例 1示例 2示例 3示例 43.提示4.代码1.基于选择排序&两边循环code复杂度2.基于计数排序的&两边forcode复杂度3.基于快速排序&一遍循环code复杂度1.问题描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。2.测试用例示例 1输入:nums = [2,0,2,1,1,0原创 2021-12-21 22:26:51 · 308 阅读 · 0 评论 -
Leetcode NO.215 Kth Largest Element In An Array 数组中的第K个最大元素
文章目录1.问题描述2.测试用例示例 1示例 23.提示4.代码1.基于堆排序code复杂度2.基于快速选择排序code复杂度1.问题描述给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。2.测试用例示例 1输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 43.提示1 <= k &l原创 2021-12-20 23:46:04 · 276 阅读 · 0 评论 -
Leetcode NO.136 Single Number 只出现一次的数字
文章目录1.问题描述2.测试用例示例 1示例 2.代码1.数学方式 & hashcode复杂度2.数学方式 异或code复杂度1.问题描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?2.测试用例示例 1输入: [2,2,1]输出: 1示例 2输入: [4,1,2,1,2]输出: 4.代码1.数学方式 & hashcode/**原创 2021-12-19 23:30:43 · 393 阅读 · 0 评论 -
Leetcode NO.20 Valid Parentheses 有效的括号
文章目录1.问题描述2.测试用例示例 1示例 2示例 3示例 4示例 53.提示4.代码1.栈方式实现code复杂度1.问题描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。2.测试用例示例 1输入:s = “()”输出:true示例 2输入:s = “()[]{}”输出:true示例 3输入:s = “(]”输出:false示例 4输入:s原创 2021-12-09 19:44:04 · 180 阅读 · 0 评论 -
Leetcode NO.232 Implement Queue Using Stacks 使用栈实现队列
文章目录1.问题描述2.测试用例示例 13.提示4.代码1.入队反转code复杂度2.出队反转code复杂度1.问题描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:原创 2021-12-08 16:36:36 · 370 阅读 · 0 评论 -
Leetcode NO.146 lru-cache LRU Cache 最近最少使用实现
文章目录1.问题描述2.测试用例示例 13.提示4.代码1.继承LinkedHashMap实现code复杂度2.HashMap && DoubleLinklistcode复杂度1.问题描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否原创 2021-12-07 12:32:13 · 222 阅读 · 0 评论 -
Leetcode NO.255 Implement Stack Using Queues 使用队列实现栈
文章目录1.问题描述2.测试用例示例 13.提示4.代码1.两个队列实现code复杂度2.单队列实现code复杂度1.问题描述请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。原创 2021-12-06 23:15:30 · 187 阅读 · 0 评论 -
Leetcode NO.19 Remove Nth Node From End Of List && 移除链表倒数第n个节点
文章目录1.问题描述2.测试用例示例 1示例 2:示例 3:3.提示4.代码1.暴力code复杂度2.双重循环-栈code复杂度3.双指针code复杂度1.问题描述给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。2.测试用例示例 1输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]3.提示链表中结点的数目为原创 2021-12-01 19:59:17 · 230 阅读 · 0 评论 -
Leetcode NO.21 Merge Two Sorted Lists && 合并链表(有序)
文章目录1.问题描述2.测试用例示例 1:示例 2:示例 3:3.提示4.代码1.迭代code复杂度2.递归code复杂度1.问题描述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。2.测试用例示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]3.提示两个链表的节原创 2021-11-30 16:23:34 · 305 阅读 · 0 评论 -
Leetcode NO.206 Reverse Linked List 反转链表(迭代&递归)
文章目录1.问题描述2.测试用例示例 1:示例 2:示例 3:3.提示4.代码1.迭代code复杂度2. 递归code复杂度1.问题描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。2.测试用例示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]3.提示链表中节点的数目范围是 [0, 5000]-5000 <= Node原创 2021-11-26 18:33:00 · 328 阅读 · 0 评论 -
Leetcode NO.287 Find The Duplicate Number
文章目录1.问题描述2.测试用例示例 1:示例 2:示例 3:示例 4:3.提示4.代码binary searchcode复杂度快慢指针code复杂度1.问题描述给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。2.测试用例示例 1: 输入:nums = [1,3,4,原创 2021-11-25 19:22:04 · 217 阅读 · 0 评论 -
Leetcode NO.74 Search a 2D Matrix & binary search
文章目录1.问题描述2.测试用例示例1示例23.提示4.代码1.问题描述编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。2.测试用例示例1示例23.提示m == matrix.lengthn == matrix[i].length1 <= m, n <= 100-104 <= matrix[i][j], target <= 104原创 2021-11-22 14:07:53 · 205 阅读 · 0 评论 -
LeetCode图解 RotateImage & Array类型问题
文章目录1.问题描述2.测试用例用例1:用例2用例3:用例43.提示4.图解-代码1.数学方法:矩阵转置 + 反转图解code分治-矩阵旋转图解code1.问题描述给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。2.测试用例用例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6原创 2021-11-16 19:15:25 · 238 阅读 · 0 评论 -
LeetCode图解 NextPermutation & Array类型问题
LeetCode图解 NextPermutation & Array类型问题文章目录LeetCode图解 NextPermutation & Array类型问题1.问题描述2.测试用例3.提示4.图解暴力一遍循环5.代码一遍循环1.问题描述实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。2.测试用例原创 2021-11-13 16:17:33 · 216 阅读 · 0 评论 -
LeetCode图解 3Sum & Array类型问题
LeetCode图解 3Sum & Array类型问题文章目录LeetCode图解 3Sum & Array类型问题1.问题描述2.测试用例3.提示4.解题思路一、暴力二、hash三、双指针5.图解(双指针)1.问题描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。2.测试用例示例 1: 输入:nums = [-1,0,原创 2021-11-10 17:24:35 · 199 阅读 · 0 评论 -
Leetcode Longest Substring Without Repeating Characters & 无重复字符的最长子串 解题报告
问题描述给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。测试用例示例1输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例2输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 ..原创 2021-08-20 11:47:28 · 187 阅读 · 0 评论 -
Leetcode TwoSum & 两数之和 解题报告
Two Sum给定一个数组nums和一个整数值target,返回两个数值(nums数组下标的index),使其所对应的数组元素,相加得到目标值target。附加条件约束:每个nums数组和目标值,只有一个解决方案不能使用重复的值作为解,eg: 列子 Example 2中 目标值是6, 不能直接返回 [0,0]可以按照任何顺序返回答案DescribeGiven an array of integers nums and an integer target, return indices原创 2021-02-07 18:50:25 · 252 阅读 · 0 评论 -
Leetcode Add Two Numbers & 两数相加 解题报告
1.问题描述给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。2.测试用例示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9]原创 2021-08-09 11:11:59 · 215 阅读 · 0 评论
分享