
leetCode
love music.
中山大学计算机博士在读,曾就职于腾讯等公司,目前从事AI多模态大模型研究。
展开
-
leetCode 两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]class Solution {public: vector<int&...原创 2018-06-17 09:50:06 · 176 阅读 · 0 评论 -
leetcode 33. 搜索旋转排序数组(二分查找)
链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中...原创 2019-08-15 13:31:39 · 189 阅读 · 0 评论 -
leetcode 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(log n) 级别。如果数组中不存在目标值,返回[-1...原创 2019-08-15 13:39:25 · 251 阅读 · 0 评论 -
leetcode 39. 组合总和(回溯算法)
链接:https://leetcode-cn.com/problems/combination-sum给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。示...原创 2019-08-15 14:15:36 · 207 阅读 · 0 评论 -
leetcode 300.最长上升子序列(动态规划)
674. 最长连续递增序列给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长...原创 2019-08-11 20:37:35 · 268 阅读 · 0 评论 -
leetcode 42. 接雨水(动态规划,双端指针)
题目: 给定n 个非负整数表示每个宽度为 1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6解题参考链接:接雨水解法一:...原创 2019-08-15 20:46:59 · 474 阅读 · 0 评论 -
leetcode 4.寻找两个有序数组的中位数(二分查找)
题目:给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位...原创 2019-08-12 10:55:17 · 370 阅读 · 0 评论 -
leetcode 78.子集(动态规划)
给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解法一:动态规划逐个枚举,空集的幂集只有空集,每增加一个元素,让之前幂集中的每个集合,追...原创 2019-08-21 11:31:43 · 288 阅读 · 0 评论 -
leetcode 5.最长回文子串(动态规划)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解题思路链接:...原创 2019-08-12 16:44:27 · 407 阅读 · 0 评论 -
leetcode 11. 盛最多水的容器(双端指针)
原题链接:11. 盛最多水的容器给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7...原创 2019-08-12 20:14:40 · 195 阅读 · 0 评论 -
leetcode 62. 不同路径(动态规划)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?解法:用动态规划class Solution {public: int uniquePaths(i...原创 2019-08-21 16:55:22 · 173 阅读 · 0 评论 -
leetcode 64. 最小路径和(动态规划)
给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解法:从左上开始,用动态规划的方法。思路参考leetcode 62https://blog...原创 2019-08-21 19:18:40 · 475 阅读 · 0 评论 -
leetcode 15.三数之和(排序+双端指针)
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum题目:给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4...原创 2019-08-13 10:19:22 · 169 阅读 · 0 评论 -
leetcode 46. 全排列(回溯法)
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解法:回溯法即可class Solution {vector<vector<int>> ans;public: vect...原创 2019-08-18 15:44:55 · 188 阅读 · 0 评论 -
leetcode 48. 旋转图像
给定一个 n×n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]...原创 2019-08-18 15:47:24 · 127 阅读 · 0 评论 -
leetcode 49. 字母异位词分组(map用法)
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。解析:先对每个单词单独排好序...原创 2019-08-18 15:51:23 · 148 阅读 · 0 评论 -
leetcode 31. 下一个排列
链接:https://leetcode-cn.com/problems/next-permutation题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,...原创 2019-08-15 13:23:48 · 212 阅读 · 0 评论 -
leetcode 32. 最长有效括号
链接:https://leetcode-cn.com/problems/longest-valid-parentheses给定一个只包含 '('和 ')'的字符串,找出最长的包含有效括号的子串的长度。示例1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"题...原创 2019-08-15 13:20:16 · 143 阅读 · 0 评论 -
LeetCode 8. 字符串转整数 (atoi)
8. 字符串转整数 (atoi) 实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于...原创 2018-09-15 16:12:07 · 163 阅读 · 0 评论 -
leetcode 24. 两两交换链表中的节点
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.解题思路:用递归即可轻松解决写法一:/** * Definition for singly-linked list. * struct...原创 2019-07-14 23:00:04 · 132 阅读 · 0 评论 -
leetcode 146.LRU 策略详解和实现
原文作者微信公众号:labuladongLRU 策略详解和实现如果只想看代码的读者可以直接翻到最后,有 Java 和 C++ 的解法代码。一、什么是 LRU 算法就是一种缓存淘汰策略。计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置。但问题是,删除哪些内容呢?我们肯定希望删掉哪些没什么用的缓存,而把有用的数据继续留在缓存里,方便之后继续使用。那么,什么样的数据...转载 2019-07-16 16:02:49 · 762 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串(滑动窗口)
题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是...原创 2019-07-19 16:27:16 · 156 阅读 · 0 评论 -
leetcode 19. 删除链表的倒数第N个节点(前后指针)
链接:19. 删除链表的倒数第N个节点题目:给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。解题思路:通过前后两个指针即可。前后两个指针间隔n个节点。...原创 2019-08-13 15:59:51 · 168 阅读 · 0 评论 -
leetcode 22. 括号生成(dfs)
链接:https://leetcode-cn.com/problems/generate-parentheses给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]题解:需要构造有效...原创 2019-08-13 19:27:11 · 163 阅读 · 0 评论 -
leetcode 55. 跳跃游戏(动态规划、贪心算法)
链接:https://leetcode-cn.com/problems/jump-game题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例2:输...原创 2019-08-18 17:06:47 · 1172 阅读 · 0 评论 -
leetcode 56. 合并区间(排序)
题目:给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...原创 2019-08-18 19:46:49 · 232 阅读 · 0 评论 -
leetcode 11. 盛最多水的容器(双端指针)
链接:https://leetcode-cn.com/problems/container-with-most-water题目:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾...原创 2019-08-14 12:36:36 · 210 阅读 · 0 评论 -
leetcode 15. 三数之和(排序+双端指针)
链接:https://leetcode-cn.com/problems/3sum给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[...原创 2019-08-14 12:49:30 · 145 阅读 · 0 评论 -
leetcode 17. 电话号码的字母组合(dfs)
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].解析:用DFS即可轻松解决。class Solution {map<char,strin...原创 2019-08-14 12:55:41 · 392 阅读 · 0 评论 -
leetcode 19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.题解:用前后两个指针即可。注意前后指针前隔为n。删除的结点为前指针的下一个结点。/** * Definition for singly-...原创 2019-08-14 13:01:41 · 120 阅读 · 0 评论 -
leetcode 22. 括号生成(dfs)
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]题解:用DFS即可轻松解决。class Solution {vector<string> res;public...原创 2019-08-14 13:19:57 · 169 阅读 · 0 评论 -
leetcode 23. 合并K个排序链表(归并)
合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6解析:可类似于用合并两个排序链表的方法解法。时间复杂度:O(kN),k是链表的数目。 ...原创 2019-08-14 13:31:35 · 198 阅读 · 0 评论 -
leetcode 99. 恢复二叉搜索树(中序遍历)
二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例1:输入: [1,3,null,null,2] 1/3\ 2输出: [3,1,null,null,2] 3/1\ 2示例2:输入: [3,1,4,null,null,2] 3/ \1 4 /2输出: [2...原创 2019-08-20 09:32:01 · 203 阅读 · 0 评论 -
leetcode 1143.最长公共子序列 (动态规划)
给定两个字符串text1 和text2,返回这两个字符串的最长公共子序列。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字...原创 2019-10-10 13:16:29 · 761 阅读 · 0 评论