总觉得这里值得再开一个目录出来
算法的时间复杂度:
O(1) 常数阶 < O(logn) 对数阶 < O(n) 线性阶 < O(nlogn) < O(n^2) 平方阶 < O(n^3) < { O(2^n) < O(n!) < O(n^n) }
先记录一下无重复字符最长子串sjlfsjlfiwjelfijwlhglwiehg怎么去遍历的一个问题
1.暴力法
直接把所有子串拉出来,这里涉及到第一次遍历,从1遍历到n
然后从上一次遍历里面抽出随机的一个,假设就抽第一个,那第一个后面还接了很多,从一到二一直遍历到从一到n,又是n次
所有子串都拉出来了之后,再遍历这个从一到二或者从一到n,再n次
所以暴力法的时间复杂度是O(n^3)
######
这里插一个等差数列的求和办法,和=1/2*n*(n+1),也就是只要涉及到一个等差的加法基本两个都视为n算了,最后乘出来也是跟n^2一个量级的。
######
2.滑动窗口办法
首先是全部遍历一遍,从里面抽取一种情况,首先保证这次遍历到的前面有一个不重复区间,然后再把这次遍历到的和这个区间里面的作对比。
保证前面的那个不重复区间会用到Hash办法,而这么算下来就是O(n^2)的复杂度。