摘要: 思路: 利用回溯,其运行过程可以看成遍历一颗4叉树(因为要求不重复,所以中间剪掉了部分树枝),复杂度为$O(n^h)$,$h$为树的高度,这里$h$相当于只用数组里最小的数加起来大于等于target时所用的数目。比如[2,3,6,7],target = 7。2+2+2+2 7,所以h为4。 clas 阅读全文
posted @ 2017-06-07 23:14 UniMilky 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 思路: 直接遍历数组。复杂度为$O(n)$。 利用二分查找,注意最后利用mid找插入位置。复杂度为$O(log(n))$。 阅读全文
posted @ 2017-06-07 22:28 UniMilky 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 思路: 二分查找,找到后分别向左向右遍历有多少重复的,然后记录左右端点即可,但是这样在某些情况下复杂度为$O(n)$,比如{8,8,8,8,8,8,8,8,8}。竟然过了。。。 总结: 1. 每次二分要判断是否找到 2. 测试程序要考虑到[],[a]两种特殊情况 阅读全文
posted @ 2017-06-07 15:56 UniMilky 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 思路: 参考 http://blog.csdn.net/abcjennifer/article/details/40152323, 复杂度为 $O(nlog(n))$ class Solution { public: void nextPermutation(vector& nums) { int 阅读全文
posted @ 2017-06-07 09:17 UniMilky 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 思路: 复杂度 $O(n)$。 class Solution { public: int removeElement(vector& nums, int val) { int res,k=0; for(int i = 0; i 阅读全文
posted @ 2017-06-07 08:32 UniMilky 阅读(148) 评论(0) 推荐(0) 编辑