Leetcode每日刷题
TradingYesterday
这个作者很懒,什么都没留下…
展开
-
第十二Leetcode每日刷题——524. 通过删除字母匹配到字典里最长单词
给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。 示例 1: 输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"] 输出:"apple" 示例 2: 输入:s = "abpcplea", dictionary = ["a","b"..原创 2022-03-07 21:51:13 · 7424 阅读 · 0 评论 -
第十一日Leetcode每日刷题——76.最小覆盖子串(Hard)
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。 如果 s 中存在这样的子串,我们保证它是唯一的答案。 示例 1: 输入:s = "ADOBECODEBANC", t = "ABC" 输出:"BANC" 示例 2: 输入:s = "a", t = "a" 输出:"a" 示例 3: 输入: s =..原创 2022-03-05 21:14:21 · 127 阅读 · 0 评论 -
第十日Leetcode每日刷题——88.合并两个有序数组
给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 写一下心路历程吧 起初想着从头一个个比,..原创 2022-02-28 22:03:32 · 95 阅读 · 0 评论 -
第九日Leetcode每日刷题——406.&&122
这两道题怎么说呢 老实讲 对我来说感觉有点难度啊 但看完题解感觉其实就那样 122.买股票题 其实如果好好分析 就可以掌握这题非常关键的一点 就是 只要第二天比第一题的股票贵 就卖 然后遍历累加就好了 只能说有点恶心人 我想了好久... 想复杂了 我知道这类题目其实还有很多变式 后面慢慢做慢慢来把 406. 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正原创 2022-02-26 22:06:52 · 145 阅读 · 0 评论 -
第八日Leetcode每日刷题——763划分字母区间.
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 示例: 输入:S = "ababcbacadefegdehijhklij" 输出:[9,7,8] 解释: 划分结果为 "ababcbaca", "defegde", "hijhklij"。 每个字母最多出现在一个片段中。 像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。 来源:力扣(LeetCode) .原创 2022-02-23 22:39:33 · 83 阅读 · 0 评论 -
第七日Leetcode每日刷题——605.种花问题
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给你一个整数数组flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数n ,能否在不打破种植规则的情况下种入n朵花?能则返回 true ,不能则返回 false。 怎么说呢 题目标签给的难度是easy 确实是一开始我就有点思路了 不过我硬着头皮在边界去分情况去判断可不可以种花 运行也确实行 class ...原创 2022-02-22 22:19:22 · 8416 阅读 · 0 评论 -
第六日Leetcode每日刷题——435.无重叠区间
贪心思想 这道题的贪心攻略: 在选择要保留区间时,区间的结尾十分重要:选择的区间结尾越小,余留给其它区间的空间 就越大,就越能保留更多的区间。因此,我们采取的贪心策略为,优先保留结尾小且不相交的区 间。 具体实现方法为,先把区间按照结尾的大小进行增序排序,每次选择结尾最小且和前一个选 择的区间不重叠的区间。我们这里使用C++的Lambda,结合std::sort()函数进行自定义排 序。 代码 classSolution{ public: int...原创 2022-02-21 21:00:22 · 84 阅读 · 0 评论 -
第五天每日Leetcode刷题——135.分发糖果
昨天其实是做了题目的 但是太简单就没写了 今天换了个刷题顺序 ,跟着GitHub上的高畅大佬刷题顺序 然后开始先刷贪心 再来回归到这题 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 这题主要考察贪心,这里的贪心策略即为,在每次遍历中,只考虑并更新相邻一 侧的大小关系。 我们只需要.原创 2022-02-20 23:39:25 · 148 阅读 · 0 评论 -
第四天Leetcode每日刷题——59. 螺旋矩阵 II
转自 公众号 代码随想录 今天偷懒啦 !!! 我觉得主要是那个循环不变量原则 贴一个其他同学那的博客关于对这个原则的讲解我觉得挺有用的 循环不变量原则 这题要模拟那个矩阵螺旋的过程 要遵循一个左闭右开的原则 再贴一个我自己写了一个多小时的代码吧 虽然没过而且很长 但我真的好好想了啊 网上别人写的代码是真的好看又高效 慢慢来吧。 int n; cin>>n; vector< vector<int> > generateMatr..原创 2022-02-19 00:36:51 · 355 阅读 · 0 评论 -
第三题每日Leetcode刷题——第209题
###解题思路 1.暴力拆解法 这道题目暴力解法当然是两个for循环,然后不断的寻找符合条件的子序列,时间复杂度很明显是O(n^2)。 classSolution{ public: intminSubArrayLen(inttarget,vector<int>&nums){ intMinLength=999999; intaccount=0; for(inti=0;i<...原创 2022-02-17 18:08:49 · 89 阅读 · 0 评论 -
第二天Leetcode每日刷题——第27题
主要是对双指针法的一个认识与掌握 两种思路 1.暴力拆解法 就硬拆 intremoveElement(vector<int>&nums,intval){ intsize=nums.size(); for(inti=0;i<size;i++){ if(nums[i]==val){//发现需要移除的元素,就将数组集体向前移动一位 ...原创 2022-02-16 22:33:19 · 320 阅读 · 0 评论 -
第一天每日刷题———Leetcode 第35题
二分法的使用 ###解题思路 这题其实就是专门用来练二分法的复习一下二分法针对有序数组且无重复元素时间复杂度O(logn) 首先就是初始条件left=0right=数组长度-1 然后下面while循环的条件非常有考究的 在讲条件前,要注意对mid的定义声明要在该循环内,要不然边界改变时,mid的值不变的,会造成时间超时 mid=left+(right-left)/2;这样可以防止数据溢出 1.最基础的情况左闭右闭情形[left,right] ...原创 2022-02-15 23:45:03 · 487 阅读 · 0 评论