Algorithm
lc1010_总持续时间可被60整除的歌曲
思路:
看了一下提示,是通过所有的数对60取模后计数,然后配对能凑成60的数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Solution { public: int numPairsDivisibleBy60(vector<int>& time) { unordered_map<int, int> cnt; for (auto x : time) { cnt[x%60]++; } int ans = 0; for (int i=0; i <= 30; i++) { if (!cnt[i]) { continue; } if (i == 0 || i == 30) { if (cnt[i] & 1) { ans += (cnt[i] - 1) / 2 * cnt[i]; } else { ans += cnt[i] / 2 * (cnt[i] - 1); } continue; } ans += cnt[i] * cnt[60 - i]; } return ans; } };
|
答案更精简一些:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution { public: int numPairsDivisibleBy60(vector<int>& time) { vector<int> cnt(60); for (int t : time) { cnt[t % 60]++; } long long res = 0; for (int i = 1; i < 30; i++) { res += cnt[i] * cnt[60 - i]; } res += (long long)cnt[0] * (cnt[0] - 1) / 2 + (long long)cnt[30] * (cnt[30] - 1) / 2; return (int)res; } };
|
Review
【TED演讲】开源学习革命的诞生
开源学习的诞生:
- 开源为了更好地共同创作,更好地共同修改,更好地传播知识
- 从而更好地一起创造更好的世界
Tips
一文带你看透基于LSM-tree的NoSQL系统优化方向
Share
人生其实是运气占主导,所以快乐生活,为而不争
https://youtu.be/qzIfQ5_gYzc
老高介绍了人生运气实验,发现人生的财富大小其实和能力的大小相关性基本没有太多相关性,更多的是运气占人生主导。
能力只是抓住机会使得财富翻倍的概率。所以能力中等偏上就已经很不错了,剩下的全靠运气。
所以把能力提升到中等偏上的后,多多去开阔视野,去发现好运,这样才是最大可能的获得更多财富。
而且了解到运气才是人生的主导,也能让我们感到释然,做好当下的事情,并也及时行乐,尽人事,听天命,这样才能与自己和解,成为一个内心平和的人。