【Fifty Project - D18】
感觉自己就不是计划星球人,虽然fifty project要求每天早上完成一天的计划,但是对于一个p人脑子,强制自己按照计划行事真的太难了。我也理解在早晨花费时间做好一天的计划有很多好处,但是实际行动起来完成率极低。p人的世界里变动太多了,所以每天的计划表实际上都变成了最后记录的时候的“完成回顾表”hhhh
我决定放弃“计划”这件事情,以后就改为记录吧~
今日完成记录
Time | Plan | 完成情况 |
---|---|---|
9:00 - 11:00 | 摩托车驾驶证考试 | √一把过拿下驾驶证! |
11:00 - 12:00 | Leetcode周赛 | √ |
14:00 - 15:30 | 健身 | √ |
16:00 - 17:00 | 《挪威的森林》 | √ |
Leetcode
周赛
难得这周单双周赛哇,但是双周赛熬夜场放弃了,单周赛又刚好是摩托车驾驶证考试时间(好在一把过了嘻嘻)回来以后还有一周时间,赶紧写了两个题,掉大分了又
统计被包围的建筑:一个二维数组地图,有n个建筑,如果同行上左侧右侧都有建筑,同列上侧下侧都有建筑,那么这个建筑是被包围的。
思路:记录每一行每一列的最大最小值,然后遍历每一个建筑,只要不是该行该列最大最小值,那么就是被包围建筑。
针对图的路径存在性查询I:给定n和一个长度为n的数组nums, 这是一个非递减数组,如果两个数差距小于等于maxDiff,则表示这两个节点存在边,最后给出一系列query,要求返回一个Boolean[] 对应query,query[i]是一个数组 [ u i , v i ] [u_i, v_i] [ui,vi], res[i]表示 u i 和 v i u_i和v_i ui和vi是否相连。
思路:根据nums非递减,可以顺序遍历nums,结合maxDiff可以得知哪些点之间存在边,然后用并查集记录哪些边相连。并且可以O(1)时间查出是否相连
后面两个题是hard,第四题是第二题的复杂版本,明天找时间补一下
每日一题
统计符合要求的长度为3的子数组数目:给出长度为3的子数组且符合要求的数目。要求:i, i + 1, i + 2
满足arr[i + 1] = (arr[i] + arr[i + 2]) * 2。
思路:直接暴力遍历,之前0x3f大佬提到的遍历技巧,三个数情况,枚举中间。
题单
最小正和子数组:给定一个数组arr, 给定两个数l和r, 要求找出这样一个子数组,这个子数组的长度大于等于l小于等于r,并且该子数组和大于零,且是所有满足要求的子数组的最小和。
思路:首先计算前缀和,这种求子数组和大于等于0或者小于0的题都可以用前缀和处理,一方面是因为子数组可以用前缀和做差计算,另一方面通过有序表或者哈希表,可以快速找到当右节点为j时满足某个要求的子数组左节点。使用滑动窗口读数,窗口大小为[l, r]。利用有序表存储读过数的前缀和pre[i], 有序表中存放了r-l+1个前缀和,对于当前的i,以i为子数组的右节点,计算哪个点作为左节点的时候可以得到最小正和。只要找到有序表中小于pre[i]的数,pre[i] - orderedTable.floor(pre[i])即为当前i可以得到的符合要求的最小正和。遍历完就可以得到所有可能的最小正和。
感觉自己完全没有表述清楚QAQ
健身
今天练胸
- 30磅哑铃平板推胸 12 * 4
- 30磅哑铃上斜推胸 12 * 4
- 20kg 蝴蝶机夹胸 12 * 4
- 绳索下拉 10kg * 12 * 4
- 腹肌训练
《挪威的森林》
朋友送的《挪威的森林》已经放了好久好久了,一直都没有打开看,最近打开看主要有两个原因:一方面是因为看完了《百分之百的女孩》以后,感觉有一点点意犹未尽,因为都是一些短小说,让我感觉有点难受,想看看他的正经长篇;另一方面是因为前阵子抖音刷到的《挪威的森林》的片段文案,让我感觉这个书也有一点点意思hhh
今天看了序,啊,真的,文人写序真是长死了,不过也是,这是译本,译者在书中的操作空间一方面是自己翻译的表达,另一方面也就是序(既可以评价一下这本书,又可以发表一下自己对作者、作品的感情~)hhhh
读序读到后面有点烦啊,因为中间频繁出现剧透,不过好在我记性不好,看完就忘;还有就是太长了,被吊胃口吊得难受,就好像饿了很久很久,不过越是饥饿,晚饭应该越是好吃吧~ 有点期待明天的正文了