写点什么

ARTS 挑战打卡第九周(200706-200712)

发布于: 2020 年 08 月 24 日
ARTS 挑战打卡第九周(200706-200712)

Algorthm

https://leetcode.com/problems/two-sum-iv-input-is-a-bst

题目是给定一个值k,在BST里找是否有两个数字相加等于k。



思路:把找两个数字简化为找一个数字,从根节点开始,用k减去根节点的值,然后在左右子树里递归地找剩余的那个值。



Review

https://hackernoon.com/are-unit-tests-a-waste-of-your-time-ftw3umv

文章论述单元测试是否有必要,写单元测试是很费时间的一件事情,如果代码发生改动,还需要维护单元测试,有时候写单元测试的时间甚至比写代码的时间都要长,但是写单元测试是很有必要的。



写单元最好的时机就是写代码的时候,如果写代码的时候不写单元测试,那么之后可能永远都不会补上的。



写完代码后的选择:

完全不测试:这个不用说了,肯定会有很多问题,甚至饭碗都不保

直接交给测试人员手动测试:很快就会发现,本来可以很快被发现的问题,会在你跟测试人员间不断地出现。

自测保证:自测的话,也需要花很长的时间去发现问题,只是把写单元测试的时间换为一次次的点击。



单元测试值得花时间去写,因为自测的话,跑整个流程,往往有些场景会被忽略掉,所以自测是不够充分的。



自己的经验是:在写单元测试的时候,粒度越小的单元测试,越能维护代码的稳定。另外,如果一个函数的单元测试不好写,说明函数的粒度不够小,或者怀疑自己,代码是不是没写好,应该重新修改函数,将函数改为粒度更小一些或者把函数改为更清晰,更单一的,一个函数只做一件事。

Tip

1、Java中,List、Set、Map 之间的区别是什么?



List和Set都是继承自Collection。Map是哈希表的父类。

List中的元素是可重复的,是一个列表,Set和Map的元素是不可重复的。

List是有序的,每个节点都是有序地连接起来;Set和Map是无序的。Map有有序的实现(TreeMap),也有无序的实现(HashMap),也有添加顺序的实现(LinkedHashMap)。



List的常见实现类有AbstractList,其子类有ArrayList、LinkedList、Vector。

Set的常见实现类有AbstractSet,其子类有HashSet、LinkedHashSet、TreeSet。

Map的常见实现类有HashMap和HashTable。



List中,Vector是线程安全的;Map中,HashTable是线程安全的。



2、ArrayList 和 LinkedList 的区别是什么?

一个比较明显的区别是ArrrayList底层实现的数据结构是数组,支持随机访问;LinkedList底层实现的数据结构是双向循环链表,不支持随机访问。



使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。



往下标为0的位置增加元素,ArrayList的时间复杂度是O(n),而LinkedList是O(1)



Share



推荐文章-为什么TCP建立连接需要三次握手



原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

如果本文对你有帮助,请点个赞吧,谢谢





发布于: 2020 年 08 月 24 日阅读数: 46
用户头像

公众号【老胡爱分享】 2018.03.13 加入

一个热爱分享,热爱分享的普通人。 追求终身成长,希望用文字的力量服务大众。

评论

发布
暂无评论
ARTS 挑战打卡第九周(200706-200712)