摘要: 可以很轻松地想到用回溯法进行暴力枚举,但复杂度很高O(6^n),肯定会超时,所以可以类比为斐波那契数列的形式:\(f(n) = f(n-1)+f(n-2)+f(n-3)+f(n-4)+f(n-5)+f(n-6)\)。采用类似动态规划的方法(其实和斐波那契一样,并不严格是动态规划)。 回溯法暴力枚举C 阅读全文
posted @ 2020-08-27 22:40 程序员曾奈斯 阅读(143) 评论(0) 推荐(0)
摘要: 即求队列的最大值 #include <queue> class Solution { public: vector<int> maxInWindows(const vector<int>& num, unsigned int size){ vector<int> maxInWind; if(num. 阅读全文
posted @ 2020-08-27 21:54 程序员曾奈斯 阅读(132) 评论(0) 推荐(0)
摘要: 快慢指针(主要解决链表中的问题) 链表中是否包括环,进而求链表中环的入口节点 链表的中间节点(重要作用就是对链表进行归并排序) 链表的倒数第k个节点 等等 左右指针(主要解决数组(或者字符串)中的问题) 二分查找 求排序树组中和为sum的两个数 反转数组(字符串) 滑动窗口(双指针技巧的最高境界) 阅读全文
posted @ 2020-08-27 10:59 程序员曾奈斯 阅读(337) 评论(0) 推荐(0)
摘要: 二分算法的前提是排序数组,通过折半查找的方式,将找到目标值的时间复杂度缩小到O(logn) 最主要的3个问题 查找某元素即返回索引 查找某元素的左边界索引 查找某元素的右边界索引 二分算法框架: // 查找某元素即返回索引 int binarySearch(int num[], int length 阅读全文
posted @ 2020-08-27 08:58 程序员曾奈斯 阅读(204) 评论(0) 推荐(0)