2.1 - Initialisation
#简单理解
查看思路
将Starting_tiptop 储存在一个变量里面 (这里称为 当前显示)。
在查看的时候输出当前显示
就简单的赋值就好了,没有过多要说的。
2.2 - Navigating
2.3 - Blueness
#简单理解
查看思路
题目中明确声明
get_blueness 需要达到 ,然而光是读每个蓝色的时间复杂度就已经达到了,所以最简单的处理方法是 - 不要在 get_blueness 中处理。大致思路
好的知道了大致思路,来看一下函数里面如何实现
如何更新当前蓝量
1. 获取当前tiptop 蓝量
问题1
循环遍历每个Tiptop,使用 bit_vector_set 数据结构来快速计数,但是注意考虑 bit_vector_set 的时间复杂度。
bit_vector_set 时间复杂度 ✅ 添加速度为 ✅ 查询元素是否存在 速度为 ⚠️ 查看尺寸速度为 - 世界上最慢的东西
解决方法 - 手动设置一个计数器,每次添加时如果添加成功则计数器+1
问题2
每个像素点的蓝色取值范围为 ,而 bit_vector_set 不接受 作为输入。
解决方法 - 让每个蓝色 + 1,从而让蓝色取值范围变为 ,完美解决。
2. 获取蓝量中位数
使用sorted_list 来储存所有出现过的蓝量,利用sorted_list的性质 - 自动排序。
找到中间 一位/两位 找到median。
伪代码
2.4 - Pinching Out
2.5 - Posting Comments
#简单理解
查看思路
逻辑步骤
- 内部方法
scuess() - 调用
remote_server.post_comment()上传评论数据 - 返回
True表示成功
- 特殊情况处理
- 如果评论长度为 1 → 直接调用
scuess()返回成功
- 拆分评论长度
half = comment_length // 2is_odd = comment_length & 1(判断是否奇数长度)
- 使用栈保存前半部分评论字符
- 创建容量为
half的栈 - 循环
half次,将评论前半部分字符压入栈中
- 比较后半部分字符
- 从后半部分的第一个字符开始(如果是奇数长度则跳过中间字符)
- 循环直到评论结尾:
- 弹出栈顶元素与当前字符比较
- 若不相等 → 返回
False(非对称)
- 全部匹配成功
- 调用
scuess()上传评论并返回Tru
