LeetCode周赛#235

2021-04-04 做题

传送门 T1:截断句子 思路 签到题,用python会比cpp简单很多。直接按空格split然后分片就行。 代码 ```python class Solution(object): def truncateSentence(self, s, k): """ :type s: str :type k: int :rtype: str """ ss = s.split(" ") if k == len(ss): return s ans = " ".join(ss[:k]) return ans ``` 赛后感觉写的太冗长了,可以精简成一句: ```python class Solution(object): def truncateSentence(self, …

阅读全文 →

LeetCode周赛#224

2021-01-17 做题

传送门 T1 可以形成最大正方形的矩形数目 思路 签到题,半分钟直接来。 代码 ```cpp class Solution { public: int countGoodRectangles(vector>& rectangles) { int ans = 0; int maxLen = -1; for(auto el : rectangles) { maxLen = max(maxLen, min(el[0], el[1])); } for(auto el : rectangles) { if(min(el[0], el[1]) == maxLen) { …

阅读全文 →

LeetCode每日一题:字符串中的第一个唯一字符

2020-12-23 做题

法1:hash 思路 很简单的思路,用一个hash表,键为字符,值为一个pair,pair的first成员存字符的出现次数,second成员为该字符的下标,维护一个下标最小值为答案即可。 代码 ```cpp class Solution { public: int firstUniqChar(string s) { unordered_map> mp; for(int i = 0; i < s.size(); i++) { mp[s[i]].first++; mp[s[i]].second = i; } int pos = INT_MAX; for(auto el: mp) { if((el.second).first == 1) { pos = min(pos, (el.second).second); } } return …

阅读全文 →

LeetCode周赛#220

2020-12-21 做题

传送门 T1重新格式化电话号码 思路 周赛经典的字符串处理题。难倒是不难,但是处理起来感觉比往期的签到题麻烦不少啊... 主要思路就是replace掉'-'与空格,然后每三个一组分片,塞进列表,最后再对单出来的元素特殊处理。 代码 ```python class Solution: def reformatNumber(self, number: str) -> str: number = number.replace('-', '').replace(' ', '') ans, N = [], len(number) for i in range(0, N, 3): ans.append(number[i:i+3]) if len(ans[-1]) == 1: last = ans.pop() sec_last = ans.pop() ans.append(sec_last[:2]) …

阅读全文 →

LeetCode专题训练:查找表类算法

2020-08-13 做题

LeetBook传送门 LeetCode最近一次更新中更新了大量高质量的LeetBook,做起来很舒心,于是打算开一些博文来记录我刷Book的经历。 集合set的使用 t1两个数组的交集 求两个集合的交集,重复元素计算一次。 思路很简单,C++里set元素具有唯一性,所以用两个set给两个数组去重再求交集即可。 ```cpp class Solution { public: vector intersection(vector& nums1, vector& nums2) { setset1; setset2; vector ans; for(int i = 0; i < nums1.size(); i++) set1.insert(nums1[i]); for(int i = 0; i < nums2.size(); i++) set2.insert(nums2[i]); set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(), back_inserter(ans)); return …

阅读全文 →

2020 蓝桥杯省赛模拟赛B组

2020-04-29 做题

A有趣的数字 我们称一个数是质数,而且数位中出现了&nbsp;5&nbsp;的数字是有趣的。例如&nbsp;5,59,457&nbsp;都是有趣的,而&nbsp;15,7&nbsp;不是。求&nbsp;1&nbsp;到&nbsp;100000&nbsp;中有趣的数的个数。&nbsp; 没啥好说的,就硬来。先用筛法打出素数表,再用check函数确认数位里是否含5。时间复杂度肯定是不优的,但填空题嘛能解出来就是AC。最后答案是3282. ```cpp #include #include #include #include #define get(x) scanf("%d", &x;) #define lget(x) scanf("%lld", &x;) #define set(a,b) memset(a, b, sizeof(a)) #define rep(a, b, c) for (int a = b; a <= c; a++) using namespace std; typedef long long ll; const int …

阅读全文 →