![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
🔥 LeetCode 热题 HOT 100
周星智
齐鲁工业大学大三在读
展开
-
48、旋转图像
输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]原创 2023-04-18 15:24:38 · 92 阅读 · 0 评论 -
46、全排列
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。剪枝条件:每个组合中不能有重复的数,即数组nums中的元素在一个组合中只能使用一次。输入:nums = [1,2,3]输出:[[0,1],[1,0]]输入:nums = [0,1]输入:nums = [1]原创 2023-04-16 11:09:44 · 178 阅读 · 0 评论 -
39、组合总数
的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。剪枝条件:元素能重复,但组合不能重复,比如[2,2,3]和[2,3,2]就是重复的组合。输入:candidates = [2,3,6,7], target = 7。输入: candidates = [2,3,5], target = 8。输出: [[2,2,2,2],[2,3,3],[3,5]]输出:[[2,2,3],[7]]原创 2023-04-15 10:40:35 · 371 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
首先不断二分找到一个nums[mid]==target的中间值,再分别在这个中间值的左右两侧内继续二分,直到找到最后一个等于target的值则结束。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。如果数组中不存在目标值 target,返回 [-1, -1]。分别定义一个用于找左右两侧的递归函数,函数内不断二分。输入:nums = [], target = 0。输出:[-1,-1]输出:[-1,-1]原创 2023-04-08 12:36:55 · 247 阅读 · 0 评论 -
33、搜索旋转排序数组
在传递给函数之前,nums 在预先未知的某个下标 k(0原创 2023-04-03 14:05:08 · 243 阅读 · 0 评论 -
31、下一个排列
例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]。例如,arr = [1,2,3] 的下一个排列是 [1,3,2]。输入:nums = [1,2,3]输入:nums = [3,2,1]输出:[1,3,2]输出:[1,2,3]原创 2023-03-05 20:16:44 · 46 阅读 · 0 评论 -
23、合并K个升序链表
输入:lists = [[1,4,5],[1,3,4],[2,6]]请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。输出:[1,1,2,3,4,4,5,6]将它们合并到一个有序链表中得到。输入:lists = [[]]输入:lists = []原创 2023-03-02 09:44:52 · 50 阅读 · 0 评论 -
22、括号生成
输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。选括号时左括号的数量始终是不能大于右括号的,不然就不能成双成对。要么选左括号要么选右括号,’选择‘会展开成一棵解的空间树。能选右括号的条件:左括号的数量小于右括号。能选左括号的条件:左括号的数量不为0。当括号的长度等于2*n时,结束。原创 2023-03-01 20:47:28 · 46 阅读 · 0 评论 -
20、合并两个有序列表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]两个链表的节点数目范围是 [0, 50]输入:l1 = [], l2 = []l1 和 l2 均按 非递减顺序 排列。输出:[1,1,2,3,4,4]原创 2023-02-26 19:51:04 · 251 阅读 · 0 评论 -
20、有效的括号
当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。当我们遇到一个左括号时,我们会期望在后续的遍历中,有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个左括号放入栈顶。哈希表的键为右括号,值为相同类型的左括号。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。在遍历结束后,如果栈中没有左括号,说明我们将字符串 s 中的所有左括号闭合,返回。原创 2023-02-26 09:31:01 · 37 阅读 · 0 评论 -
19、删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。输入:head = [1,2], n = 1。输入:head = [1], n = 1。输出:[1,2,3,5]原创 2023-02-24 16:06:36 · 40 阅读 · 0 评论 -
17、电话号码的字母组合
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入:digits = “23”输出:[“a”,“b”,“c”]输入:digits = “2”输入:digits = “”原创 2023-02-24 16:03:12 · 47 阅读 · 0 评论 -
15、三数之和
首先对数组进行从小到大的排序,排序后固定一个数 nums[i],再使用左右指针指向nums[i]后面部分的两端,数字分别为 nums[left] 和 nums[right],计算三个数的和 sum 判断是否满足为 sum=0,满足则添加进结果集。当 sum == 0 时,nums[left] == nums[left+1] 和 nums[right] == nums[right−1] 都会导致结果重复,应该跳过。输出:[[-1,-1,2],[-1,0,1]]输出:[[0,0,0]]原创 2023-02-23 15:55:02 · 37 阅读 · 0 评论 -
12、整数转罗马数字
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。解释: M = 1000, CM = 900, XC = 90, IV = 4.I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。解释: L = 50, V = 5, III = 3.原创 2023-02-23 14:02:27 · 71 阅读 · 0 评论 -
11、盛水最多的容器
有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。若向内 移动长板 ,水槽的短板 min(height[left],height[right])不变或变小,因此下个水槽的面积 一定变小。若向内 移动短板 ,水槽的短板 min(height[left],height[right])可能变大,因此下个水槽的面积 可能增大。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。输入:[1,8,6,2,5,4,8,3,7]说明:你不能倾斜容器。原创 2023-02-23 10:00:17 · 157 阅读 · 0 评论 -
10、正则表达式匹配
解释:因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 ‘a’。因此,字符串 “aa” 可被视为 ‘a’ 重复了一次。给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。” 表示可匹配零个或多个(‘*’)任意字符(‘.’)。解释:“a” 无法匹配 “aa” 整个字符串。输入:s = “aa”, p = “a*”输入:s = “aa”, p = “a”‘*’ 匹配零个或多个前面的那一个元素。输入:s = “ab”, p = “.原创 2023-02-23 09:52:32 · 88 阅读 · 0 评论 -
5、最长回文子串
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。给你一个字符串 s,找到 s 中最长的回文子串。解释:“aba” 同样是符合题意的答案。输入:s = “babad”输入:s = “cbbd”原创 2023-01-01 18:27:43 · 106 阅读 · 0 评论 -
4、寻找两个正序数组的中位数
别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数。解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5。输入:nums1 = [1,2], nums2 = [3,4]输入:nums1 = [1,3], nums2 = [2]算法的时间复杂度应该为 O(log (m+n))。解释:合并数组 = [1,2,3] ,中位数 2。输出:2.00000。输出:2.50000。原创 2022-12-27 17:24:15 · 42 阅读 · 0 评论 -
3、无重复字符的最长子串
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”s 由英文字母、数字、符号和空格组成。输入: s = “pwwkew”输入: s = “bbbbb”原创 2022-12-26 19:07:33 · 60 阅读 · 0 评论 -
2、两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]每个链表中的节点数在范围 [1, 100] 内。输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]题目数据保证列表表示的数字不含前导零。输出:[7,0,8]原创 2022-12-24 14:49:47 · 44 阅读 · 0 评论 -
1、两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。原创 2022-12-23 16:07:59 · 40 阅读 · 0 评论