采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
bobo老师好!我想请问当capacity为2,size为1时,这个时候remove然后继续add算不算复杂度震荡呢,还是因为这种情况特殊且耗时忽略不计而不用考虑。
赞问题和对边界条件的考虑!
我要没理解错,你想说的是,在这种情况下,remove会导致缩容,同时,再add又会扩容,产生不停的缩容扩容的情况。
虽然如此,但要明确,这种情况只有在capacity == 2 这样一个常数下情况发生。因此,缩容扩容的复杂度也是常数。这种震荡不会拓展到数据规模是 n 的情况。所以,我们的整个算法,平均复杂度依然是 O(1) 的,也就是常熟复杂度。
尽管如此,其实,一个更好地实现方案是,让我们的整个动态数组,容量值永远不要低于某一个阈值,比如10:)
继续加油!:)
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.4k 16
1.4k 17
1.4k 14
1.3k 14