Leetcode 1894
2021/9/10 23:07:24
本文主要是介绍Leetcode 1894,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
首先我们想到的肯定是模拟,对着整个数组一个个扣,扣到结尾就回到开头继续循环。
这个暴力的方法最后的时间复杂度就是O(k),数量级是很大的。
我们自然会想到,这里面其实有很多信息是可以重复利用的。
第一,如果我们记录下了sum(chalk),那么我们就能直接求余,省去很多次的遍历。
基于这个朴素的想法,我们思考一下优化的结果。:
1. 第一次遍历能被省去吗?不行,必须都访问了才能知道chalk的信息。
2. 能把后续的遍历都省去吗?也不行,最后的一次遍历不能省去,我们要算出哪里才是真正补充粉笔的地方。
于是我们最多只需要遍历两次chalk就能完成任务,时间复杂度降低到O(2n)。
第二,因为我们已经遍历过chalk了,自然能想到我们可以利用第一次遍历,记录下到第 i 个同学时,一共需要耗费多少粉笔。
我们第一个优化思路就已经记录下sum(chalk)了,而这一个优化思路就是为同学 i 记录下 sum(chalk[0..i])。
那这就是记录前缀和啊!记录完之后,我们就可以通过二分查找的方式去快速找到第几个同学需要补充粉笔了。
现在时间复杂度就降低到了O(n+logn)
代码就不贴了,自己去看官方题解吧
这篇关于Leetcode 1894的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用