每日一题
力扣62:圆圈中剩下的数字
自己用ArrayList模拟实现了一遍,勉强通过测试。在评论区有大佬给出了解释的比较好的数学方法,从删除的最后一个状态进行反推,比官方题解要好,但是看得似懂非懂,先记着,有空再回去做一次。
在这个大佬的题解里面也讲了模拟算法,一开始我也纠结使用ArrayList还是LinkedList,因为总得来说,链表的删除比较高效,而这个又是删除比较多的算法。
但是大佬提到了ArrayList里面的remove操作是对删除后的一整片内存空间进行左移,也就是说remove操作的复杂度是O(1)。而LinkedList查找复杂度是O(n),删除复杂度实际上也是O(n),因为删除需要再次查找到前一个节点,因此ArrayList的表现还是可以的。