
leetcode
千和儿
每日打卡~
展开
-
leetcode——633.平方数之和
题目:### 解题思路注意c的范围,所以使用long。首先计算出c的算术平方根并且去掉小数部分,之后使用双指针,分别放置于0和n(c的算术平方根的整数部分)的位置。如果平方和大于c,则n--;如果小于,则n++;如果相等,则返回true。如果最后m>n,说明找不到这两个数,则返回false。class Solution {public: bool judgeSquareSum(int c) { long n=(long)sqrt(c),m=0; whi.原创 2022-03-07 20:50:06 · 141 阅读 · 0 评论 -
leetcode——406.根据身高重建队列
###解题思路脑阔疼,思路很快就想到了,但是在写代码时不是遗漏了这个,就是忘写了那个,debug花了好久。首先排序,优先按照身高升序排序,如果身高相同,按照人数(第二列)升序排序。从最后一个人开始下手,向前遍历。如果people[i][1]为0或者k,如果前面正好有k个和people[i][1]同样高的人,则不用处理,直接跳过,如果k比前面与people[i][1]同样高的人的数量(n)多,则k-n,得到people[i][1]还需要有k-n个比他高的人。所以,将people[i][1.原创 2022-03-05 22:47:12 · 308 阅读 · 0 评论 -
leetcode——524.通过删除字母匹配到字典里最长单词
题目:给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回?dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]输出:"apple"提示:1 <= s.length <= 10001 <= dictionary.原创 2022-03-16 22:17:38 · 487 阅读 · 0 评论 -
leetcode——680.验证回文字符串
题目:给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串输入: s = "aba"输出: true###解题思路采用双指针的方法,两边同时移动。设i=0,j=s.size()-1,因为这是回文,所以两边应该是对称的。如果i==j,则i++,j--;如果i!=j,则考虑删除i或者j所对应的字符;(1)删除i所对应的字符,如果此时构成回文串,返回true,否则转入(2)(2)删除j所对应的字符,如果此时构成回文串,返回true,否则返回(3)在这一...原创 2022-03-09 21:03:12 · 6929 阅读 · 0 评论 -
leetcode——122.买卖股票的最佳时机
### 解题思路一开始想复杂了,花了很久还做错了,后来发现只要第i天的价格高于i-1和i+1就卖出,低于,就购买,就可以得出最大利润了。但是写完之后再想想,其实只要i-1天低于i天就可以前一天购买,后一天售出了。class Solution {public: int maxProfit(vector<int>& prices) { int s=prices.size(),mon=0,f=0; vector<int> pri; pri.pus原创 2022-03-04 16:57:34 · 74 阅读 · 0 评论 -
leetcode——763 划分字母区间
解题思路我感觉本题的重点在于找到最后一个字母的位置。不过由于查找的太多,这个方法比较耗费时间。class Solution {public: vector<int> partitionLabels(string s) { int c=0,m=0,n=0,k=0; vector<int> t; char fir=s[0],sec; c=s.length(); while(c){ m=s.find_first_of(fir,0);//从0开始查找符合原创 2022-03-02 22:42:06 · 141 阅读 · 0 评论 -
LeetCode——605. 种花问题
解题思路首先研究题目本身,把它当成一个数学题目看待,在纸上画出一个例子,找规律。可以分为两大类:边界处和中间(第一朵花和最后一朵花的中间)中间:随机选择两朵花i,j(j>i)(在遍历过程中为了记住前一个种花点的位置,可以设置一个m,使得m=i)(1)如果j-i=1,则i和j之间可以种花数为0(2)如果j-i>2,则可以开始找规律,j-i=2,种花0,j-i=3,种花0,j-i=4,种花1,j-i=5,种花1,j-i=6,种花2,j-i=7,种花2等等,可以得知计算方法为(j-i-2)/原创 2022-02-28 20:58:05 · 184 阅读 · 0 评论 -
LeetCode——452. 用最少数量的箭引爆气球
解题思路先排序,按照Xstart大小对所有气球的坐标进行排序因为Xstart大小已经确定,所以我们再来看Xend当只有一个气球时,不用纠结,只需要一个箭当气球数量大于1时,采用贪心算法,比较数组中前两个气球的Xend,选择小一点的,记为n,之后n再与下一个气球的Xend进行比较,直到与下一个气球完全没有交集,即n<Xstart,此时,箭的数量+1class Solution {public: int findMinArrowShots(vector<vector<i原创 2022-02-28 20:56:21 · 75 阅读 · 0 评论