请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于课程2-9 均摊复杂度和防止复杂度的震荡13min20s处的分析问题。

分析说可能出现data.length=1的情况,emmm,我想问一下是怎么出现data.length=1这种情况呢?
我自己是这么理解的:
如果想出现data.length=1的情况,说明之前是data.length=2进行了一次缩容。
而data.length=2要进行缩容,要满足size=0,所以应该是data中有1个元素,然后进行了remove。
此时data的情况是size=0,length=1,但是此时进行remove会满足if中的判断条件抛出一个异常,所以并不会进行缩容操作。。。
可能我理解的有偏差吧,刚开始学这个东西,理解的很慢。。。还请老师指点。

正在回答

1回答

比如,用户初始创建动态数组的时候,capacity 传的就是 1。

可以参考这里的讨论:

http://coding.imooc.com/learn/questiondetail/57001.html


另外,确实可以将整个动态数组实现成为,缩容不可能少于某一个阈值,比如 10 的动态数组。感兴趣可以试试看?


但不管怎样,在这里,你也可以理解成是一个防御型编程。毕竟,下面我们要调用的 resize(x) 中,我们不希望 x 为 0,所以防御性地判断一下 x 不能为 0,其实是没有问题的:)


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕容2892559 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-05-26 08:16:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信