学习安排根据《代码随想录》~leetcode349
求两个数组的交集,题目简单就不贴图了。
自己能用哈希表的方法解决,但是自己用到了两次for循环,显然浪费了时间。于是看了 《随想录》里面的解析,做了以下总结:
1.暴力解法时间复杂度为O(n^2)【应该是for循环的嵌套,我的不是】;
2.题目如果限制了数值的大小,使用数组来做【如果哈希值比较少,特别分散,跨度非常大,使用数组会造成空间的浪费】
3.unordered_set的底层实现是哈希表,读写效率在set中是最高的,且不会收入 重复数据,也不会对数据排序。
4.关于遇到哈希问题都用set解决,避免数组使用错误的情况:
直接使用set,不仅占用空间比数组要大,而且速度比数组慢,set把数值映射到key上都需要进行hash计算的。
自己的:
我用了数组存放重复元素,可能是内存占用少一点的原因,
解析用
unordered_set<int> nums_set(nums1.begin(), nums1.end());
存放数据,可能是比我用for循环来存放数据要快的原因。
虽然leetcode官网里面结果提交的评判不一定准,但可以当做参考。关于解析的写法,下次会注意。