【Fifty Project - D14】

今日计划

Time Plan 完成情况
9:30 - 11:30 Leetcode每日一题+0x3f题单
13:30 - 14:30 健身
15:30 - 16:00 处理CACC交通补贴相关事宜
18:30 - 19:00 学习三阶魔方还原
19:00 - 20:00 游泳

Leetcode

从每日一题开始~

今天是统计最大组的数目
题目:给定n,对1-n的数字进行分组,分组依据是各数位之和相等的即为一组,要求计算出最大组的数目。
思路:数据规模1e4,也就是分组的组数是1-36,用一个数组存储计数,最后计算最大组的数量。

easy 开胃,一天顺遂~

今天写的是0x3f的常用数据结构题单-序-常用枚举技巧 中的第一节,枚举右维护左,一开始直接无脑刷题,虽然复杂度也是O(n)的枚举,但是枚举的次数是两倍甚至三倍,后来才想起来还是应该先学一下大佬的做法,再练题。所谓学习,先学后习~
这类方法是应用于,寻找某些数对,通过枚举右侧数,维护符合条件的左侧数(一般使用哈希表)

  1. 可互换矩形对的数目:有一个二维数组,每个元素都是一个矩形的宽高,要求统计所有数对,这些数对满足对应的矩形拥有一样的宽高比
    思路:一开始没有用大佬的枚举右,维护左思路,直接用哈希表存储了所有宽高比的数量,然后用等差数列求和挨个求。需要两次for循环。实际上同样使用哈希表存储所有宽高比的数量,然后在枚举右边的同时,每次加上已经是相同宽高比的数量,也就是左边中满足相同宽高比的对数,遍历结束便可得到结果了。
  2. 统计相似字符串对的数量:定义字符串对相似只要满足两个字符串的构成字符串均为相同的字符即可。给定一个字符串数组,要求找出相似字符串对的数量。
    思路:和上题一致,哈希表存储出现过的字符串情况,枚举右边,计算当前字符串情况,加上已经出现过的左边个数,枚举完右边便得到结果。
  3. 统计数组中的好对子个数:定义rev(x)表示x的数字反转,如rev(123)=321, rev(120) = 21。给定一个数组arr, 定义好对子为i, j 满足:0 <= i < j < len(arr), arr[i] + rev(arr[j]) < arr[j] + rev(arr[i])。 求数组内所有好对子个数。
    思路:这个题稍微转换一下子,将条件转换为arr[i] - rev(arr[i]) < arr[j] - rev(arr[j]) 便和上面两题一样了。
  4. 两个非重叠子数组的最大和:给定一个数组,以及两个数len1和len2,要求找出两个子数组,长度分别为len1和len2,且不重合,找出其最大和。
    思路:还是枚举右,维护左。但是我想的是提前处理出来所有的左hhh,所以比正解用了多两个for,分别处理前(后)i个数中长度为len1的子数组最大的和是多少。然后枚举右(len2),用前缀和可以O(1)计算长度为len2的子数组和,然后加上左边和右边长度为len1的子数组的最大值,得到当前最大和。遍历结束即可得解。

总结

当枚举两个数的时候,可以通过枚举一边转换为单变量问题,同时在左侧寻找符合条件的另一半即可。这是一个挺不错的枚举方法,巧用哈希表哦,感觉也是有可能结合二分之类的使用的方法。

健身

周一回来的长沙所以没赶上练胸,今天补了练胸~

  • 轻重量哑铃热身肩关节
  • 30磅哑铃平板卧推 12*4
  • 25磅哑铃上斜卧推 12*4
  • 20kg蝴蝶机夹胸 12*4
  • 10-15-15-10kg 绳索下拉 递增递减4组
  • 跟师兄还补了一组练腹(类似keep那种跟练,差点没死在那里,还是入门级别的跟练)

三阶魔方

高中时期就学了这个东西,还背了不少公式,全忘光了,突然想学这个还是因为上次察颜悦色搞活动送了个魔方,今天也是成功复原啦!
【Fifty Project - D14】_第1张图片

今天没有完成新的阅读,不过花了半个小时把实验室的书柜重新整理了一遍,小有收获~ 决定明天翻一下《啊哈!算法》或者是东野圭吾!明天一定~

你可能感兴趣的:(Fifty-Project,leetcode)