如果一个有序队列 List 中有十个元素,要求确保每天多次取出的元素相同
第二天取有序队列中下一个元素,这样周而复始的循环
请问有没有简洁优雅的设计思路
1
JasonLaw 109 天前 via iPhone
如果第二天没有获取操作,第三天获取到的元素是第二个还是第三个?
|
4
JasonLaw 109 天前 via iPhone ![]() @echooo0 在我看来,这其实就是一个循环链表,只需要记录当前所在的节点 current 就好,节点还会跟日期关联。
如果当前日期和当前节点日期一样,那就返回当前节点,而且不移动当前节点。 如果当前日期和当前节点日期不一样,执行 current = current.next ,然后关联当前节点和当前时间,返回当前节点。 |
5
hefish 109 天前
感觉可以用两个指针来实现。
|
6
git00ll 109 天前 ![]() (当前日期距离 1970-01-01 之间天数只差 - offset ) % 队列大小, 怎么样
|
7
Hurriance 109 天前 via iPhone
觉得 6 楼的可行
|
![]() |
8
wangritian 109 天前
同 6 楼,第一反应就是用余数,如果后续队列元素数量变化,可以手动修改偏移将当天对齐到变化前
|
9
luozic 109 天前
方案越简洁越好,6 楼的不错
|
10
RightHand 109 天前 via Android
linkedHashMap 配合 list 不好吗?
|
![]() |
11
xuanbg 109 天前
这不就是个时间轮吗?轮子每天转 1 格,指针永远指向一个位置。
|
13
JasonLaw 109 天前 via iPhone ![]() 还有一点我想指出,这个需求跟队列没有任何关系,感觉很多人对队列的理解都错得很严重。
来自 Wikipedia: In computer science, a queue is a collection of entities that are maintained in a sequence and can be modified by the addition of entities at one end of the sequence and the removal of entities from the other end of the sequence. |
14
tusj 108 天前
13 楼说得对,这和队列有啥关系?就 n 个固定值,来回取。没有 push ,也没有 pop 啊?
|