摘要:
思路 方法一:暴力法 对每一个数,都向两边一一扩散,寻找山脉。 1 class Solution { 2 public: 3 int longestMountain(vector<int>& arr) { 4 int n = arr.size(); 5 6 int maxMountainLen = 阅读全文
摘要:
阅读全文
摘要:
思路 方法:并查集 并查集模板题。注意:并查集路径压缩后的查找根节点函数的最坏复杂度为O(logn),平均时间复杂度为 O(α(n)),这里α 表示阿克曼函数的反函数,在宇宙可观测的 n 内(例如宇宙中包含的粒子总数),α(n)不会超过 5。 具体解释见这里:并查集各种情况下的时间复杂度 1 cla 阅读全文
摘要:
思路 方法一:暴力法,双重循环判断 1 class Solution { 2 public: 3 //暴力法,时间复杂度O(n^2),提交之后会超时,不能accept 4 string longestPalindrome(string s) { 5 int slen = s.length(); 6 阅读全文
摘要:
思路 方法:层序遍历 1 class Solution { 2 public: 3 vector<vector<int>> zigzagLevelOrder(TreeNode* root) { 4 vector<vector<int>> ans; 5 if (!root) { 6 return an 阅读全文
摘要:
即使是同样的算法,不同的人写的代码,不同的应用场景下执行时间也可能差别很大。下面是一个测试数据: 测试的平均排序时间:数据是随机整数,时间单位是s 数据规模 快速排序 归并排序 希尔排序 堆排序 1000万 0.75 1.22 1.77 3.57 5000万 3.78 6.29 9.48 26.54 阅读全文