
力扣刷题
文章平均质量分 51
LeetCode 101:和你一起你轻松刷题(C++)
我心向阳iu
优快云专家博主、阿里云开发者社区专家博主、51CTO社区专家博主、360书馆认证博主、知乎掘金B站等平台受邀作者。
如遇开发、程序等需求,博客首页下拉加入公众号,私信博主
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode刷题概览
从今天起,整理刷过的LeetCode,日更或者周更,欢迎大家查看分类名提名:题目链接原创 2021-11-27 14:14:53 · 1956 阅读 · 2 评论 -
LeetCode 154. 寻找旋转排序数组中的最小值 II
154. 寻找旋转排序数组中的最小值 II假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0题解官方最详细:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-ar原创 2021-03-13 15:16:18 · 6302 阅读 · 15 评论 -
LeetCode 81. 搜索旋转排序数组 II
81. 搜索旋转排序数组 II假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: false进阶:这原创 2021-03-12 16:56:24 · 4322 阅读 · 0 评论 -
LeetCode 680. 验证回文字符串
680. 验证回文字符串 Ⅱ给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。题解用双指针法从两边进行查找,当遇到不一样时候再用另一个检验函数分别检验左侧+1和右侧-1后的字符串是否为回文,在检验函数中,如果是就返回true,不是直接返回false代码class Solut原创 2021-03-11 18:10:21 · 4393 阅读 · 0 评论 -
LeetCode 633. 平方数之和
633. 平方数之和给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。示例 1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2:输入:c = 3输出:false示例 3:输入:c = 4输出:true示例 4:输入:c = 2输出:true示例 5:输入:c = 1输出:true题解右指针的初始化,实现剪枝,从而降低时间复杂度。设右指针为 x,左指针固定为 0,为了使 x的值尽可能接近原创 2021-03-11 18:05:05 · 4544 阅读 · 0 评论 -
LeetCode 76. 最小覆盖子串
76. 最小覆盖子串给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"示例 2:输入:s = "a", t = "a"输出:"a"题解:滑动窗口本题使用滑动窗口求解,即两个指针 l 和 r 都是从最左端向最右端移动,且 l 的位置一定原创 2021-03-11 16:13:18 · 4162 阅读 · 0 评论 -
LeetCode 69. x 的平方根
69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。题解下面这种方法可以很有效地求出根号 aa 的近似值:首先随便猜一个近似值 xx,然后不断令 xx 等于 xx 和 a/xa/x 的平均数,迭代个六七次后 xx 的值就已原创 2021-03-11 15:52:33 · 4151 阅读 · 1 评论 -
LeetCode 18. 早餐组合
LCP 18. 早餐组合小扣在秋日市集选择了一家早餐摊位,一维整型数组 staple 中记录了每种主食的价格,一维整型数组 drinks 中记录了每种饮料的价格。小扣的计划选择一份主食和一款饮料,且花费不超过 x 元。请返回小扣共有多少种购买方案。注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1示例 1:输入:staple = [10,20,5], drinks = [5,5,2], x = 15输出:6解释:小扣有原创 2021-03-06 09:51:07 · 4142 阅读 · 2 评论 -
142. 环形链表 II
142. 环形链表 II给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释原创 2021-02-28 22:42:34 · 4002 阅读 · 1 评论 -
88. 合并两个有序数组
文章目录88. 合并两个有序数组示例 1:示例 2:题解注意代码88. 合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n =原创 2021-02-28 22:31:40 · 4138 阅读 · 1 评论 -
167. 两数之和 II - 输入有序数组
class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { // 定义左右临界值 int l=0,r=numbers.size()-1; int sum; while(l<r) { sum=numbers[l]+numbers[r];原创 2021-02-28 22:20:29 · 4011 阅读 · 2 评论 -
665. 非递减数列
文章目录665. 非递减数列示例 1:示例 2:解题思路1.nums[i] 比 nums[i-2] 大,让nums[i-1]=nums[i]2.nums[i] 比 nums[i-2] 小,让nums[i] = nums[i-1]代码665. 非递减数列这题在LeetCode中属于容易(原谅我一开始小看了),但还是被虐了 T^T给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <原创 2021-02-28 16:59:08 · 4036 阅读 · 1 评论 -
406. 根据身高重建队列
文章目录406. 根据身高重建队列示例 1:示例 2:解题思路代码406. 根据身高重建队列假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[原创 2021-02-28 15:06:25 · 3996 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
方法一:交易次数不受限,如果可以把所有的上坡全部收集到,一定是利益最大化的,就是在超过当前进价时,达到波峰时候卖出去public int maxProfit(int[] arr) { if (arr == null || arr.length <= 1) return 0; int ans = 0; for (int i = 1; i < arr.length; i++) { if (arr[i]原创 2021-02-28 11:08:11 · 3940 阅读 · 1 评论 -
763. 划分字母区间
763. 划分字母区间字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。示例:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。解题思路用 la原创 2021-02-27 22:11:10 · 3925 阅读 · 1 评论 -
452. 用最少数量的箭引爆气球
452. 用最少数量的箭引爆气球题目在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们原创 2021-02-26 19:47:35 · 3934 阅读 · 1 评论 -
605. 种花问题
605. 种花问题假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。示例 1:输入:flowerbed = [1,0,0,0,1], n = 1输出:true示例 2:输入:flowerbed = [1原创 2021-02-26 16:44:18 · 3978 阅读 · 1 评论 -
435. Non-overlapping Intervals (Medium)
435. Non-overlapping Intervals (Medium)题目描述给定多个区间,计算让这些区间互不重叠所需要移除区间的最少个数。起止相连不算重叠。输入输出样例输入是一个数组,数组由多个长度固定为 2 的数组组成,表示区间的开始和结尾。输出一个整数,表示需要移除的区间数量。Input: [[1,2], [2,4], [1,3]]Output: 1在这个样例中,我们可以移除区间 [1,3],使得剩余的区间 [[1,2], [2,4]] 互不重叠。题解在选择要保留区间时,原创 2021-02-26 16:16:50 · 4010 阅读 · 1 评论 -
455. Assign Cookies (Easy)
455. Assign Cookies (Easy)题目描述有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃最多一个饼干,且只有饼干的大小大于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱。输入输出样例输入两个数组,分别代表孩子的饥饿度和饼干的大小。输出最多有多少孩子可以吃饱的数量。Input: [1,2], [1,2,3]Output: 2在这个样例中,我们可以给两个孩子喂 [1,2]、[1,3]、[2,3] 这三种组合的任意一种。题解原创 2021-02-26 12:31:52 · 4012 阅读 · 1 评论 -
135. Candy (Hard)
135. Candy (Hard)题目描述一群孩子站成一排,每一个孩子有自己的评分。现在需要给这些孩子发糖果,规则是如果一个孩子的评分比自己身旁的一个孩子要高,那么这个孩子就必须得到比身旁孩子更多的糖果;所有孩子至少要有一个糖果。求解最少需要多少个糖果。输入输出样例输入是一个数组,表示孩子的评分。输出是最少糖果的数量。Input: [1,0,2]Output: 5在这个样例中,最少的糖果分法是 [2,1,2]。解题思路我们只需要简单的两次遍历即可:把所有孩子的糖果数初始化为 1;先原创 2021-02-26 11:19:13 · 3901 阅读 · 0 评论