![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode刷题记录
文章平均质量分 51
LeetCode刷题记录
TD21_HBW
加油提升实力!
展开
-
刷题学习记录——leetcode 55 跳跃游戏
题目给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下原创 2022-04-06 23:08:08 · 2996 阅读 · 0 评论 -
刷题学习记录——leetcode 53 最大子数组和
题目1.给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3输入:nums = [5,4,-1,7,8]输出:23提示:1 <= nums.length <= 105-104 <=原创 2022-04-03 17:37:37 · 1068 阅读 · 0 评论 -
刷题学习记录——leetcode 49 字母异位词分组
题目给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。示例 1:输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]示例 2:输入: strs = [“”]输出: [[“”]]示例 3:输入: strs = [“a”]输出原创 2022-04-02 21:20:50 · 398 阅读 · 0 评论 -
刷题学习记录——leetcode 48 旋转图像
题目给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]输入: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原创 2022-04-02 17:45:38 · 77 阅读 · 0 评论 -
刷题学习记录——leetcode 46 全排列
题目给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 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]]提示:1 <= nums.length <= 6-10 <= nums[i] <= 10原创 2022-04-01 23:03:04 · 68 阅读 · 0 评论 -
刷题学习记录——leetcode 39 组合总和
题目给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:输入:candidates = [2,3,6,7], target =原创 2022-03-31 15:58:20 · 433 阅读 · 0 评论 -
刷题学习记录——leetcode 34在排序数组中查找元素的第一个和最后一个位置
题目给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = []原创 2022-03-30 22:40:51 · 96 阅读 · 0 评论 -
刷题学习记录——leetcode 33 搜索旋转排序数组
题目整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个整数原创 2022-03-28 21:03:09 · 75 阅读 · 0 评论 -
刷题学习记录——leetcode 31下一个排列
题目整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。例如,arr原创 2022-03-27 13:09:21 · 73 阅读 · 0 评论 -
刷题学习记录——leetcode 22 括号生成
题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]初步思路采用递归的方法来解决这个问题,显然这是一个通过不断减小问题规模来简化问题以求最终解决的题目。在只有一个括号的时候只有()一种方式,但是在有两个括号的时候就有()()和(())两种方式了,n=3的时候更多,所以我们需要的就原创 2022-03-26 21:03:09 · 59 阅读 · 0 评论 -
刷题学习记录——leetcode 20 有效的括号
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true初步思路括号匹配问题是典型的 数据结原创 2022-03-26 15:43:42 · 428 阅读 · 0 评论 -
刷题学习记录——leetcode 19 删除链表中的倒数第n个结点
题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 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]初步思路这题很常规,对于查找倒数第n个这样的类型,我们常用两个指定距离为n-1的指针顺序扫描链表,当其中靠近链表尾的指针指向链表的最后一个元素时,前一个指针恰好指向倒数第n个元素,最难的部分就是获取这个原创 2022-03-25 23:00:05 · 628 阅读 · 0 评论 -
刷题学习记录——leetcode 17 电话中的字母组合
题目电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]初步思路一个数字对应3-4个字母,我原创 2022-03-24 17:44:10 · 68 阅读 · 0 评论 -
刷题学习记录——leetcode15 三数之和
题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]初步思路定二移动一个变量,也就是a b的值固定的情况下扫描c是否满足a+b+c原创 2022-03-23 22:48:12 · 172 阅读 · 0 评论 -
刷题学习记录——leetcode 11 乘最多水的容器
题目给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。输入:height = [1,1]输出:1原创 2022-03-20 22:42:08 · 72 阅读 · 0 评论 -
刷题学习记录——leetcode 9 回文数
题目给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。提示:原创 2022-03-20 17:37:57 · 446 阅读 · 0 评论 -
刷题学习记录——leetcode 8字符串转换整数
题目请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“12原创 2022-03-19 17:10:37 · 71 阅读 · 0 评论 -
刷题学习记录——leetcode 7 整数反转
题目给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0初步思路:将这个数转换为字符串,然后调用系统自带的逆序函数,再转化为数字就好(但不被推荐原创 2022-03-18 22:58:00 · 225 阅读 · 0 评论 -
刷题学习记录——leetcode 6 Z字型变换
题目:将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:s =原创 2022-03-18 22:34:39 · 79 阅读 · 0 评论 -
刷题学习记录——leetcode 21 合并两个有序链表
题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l2 均按 非递减顺序 排列思路:初步想法:原创 2022-03-04 23:30:08 · 81 阅读 · 0 评论 -
刷题学习记录——leetcode 912 排序数组
对数组排序有多种方法,是企业常考察的内容题目给你一个整数数组 nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 5 * 104-5 * 104 <= nums[i] <= 5 * 104插入排序思路插入排序分为已排序元素组成的部分(理解为排好队的人),和现在所指的元素(想原创 2022-03-03 21:09:48 · 128 阅读 · 0 评论 -
刷题学习记录——leetcode HOT100 无重复字符的最长子串
无重复字符的最长子串题目描述给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的原创 2022-02-28 23:36:07 · 77 阅读 · 0 评论 -
刷题学习记录——leetcode HOT100 两数相加
两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入: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], l2 = [原创 2022-02-27 21:07:55 · 95 阅读 · 0 评论 -
刷题学习记录——leetcode HOT100 两数之和
两数之和题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], ta原创 2022-02-27 19:48:29 · 58 阅读 · 0 评论 -
刷题学习记录——leetcode206 反转链表
题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000难度:easy代码:class Solution {public: ListNode* reverseList(ListNode* head) { ListNode*原创 2022-01-23 19:29:34 · 374 阅读 · 0 评论