1.时间复杂度计算
首先,我们需要了解时间复杂度是什么:算法的时间复杂度是指算法在编写成可执行程序后,运行时需要耗费的时间资源——通俗的讲,就是一个算法运行的快慢。(算法中基本操作的次数)
由于计算具体的执行次数太过麻烦所以引入——大O的渐进表达式(估算)
1.1 时间复杂度例题
利用大O的渐进表达式计算时间复杂度
1.1.1例题
解答:F(N)=2*N+10
由于常数对结果影响不大,直接用大O渐进表达式表示:时间复杂度为O(N)
1.1.2例题
解析:由于循环100次,是常数次,常数次循环时间复杂度就是O(1)
1.1.3例题
观察上面的字符查找函数:我们可以看见这时时间复杂度有三种情况—>
1.最好的情况:运行一次就找出来了
2.不好不坏的情况:N/2次找到
3.最坏的情况:N次找到
但是时间复杂度是取最坏的情况:上面时间复杂度也就是O(N)
1.1.4例题
计算上面二分查找的时间复杂度:
分析:我们可以将二分查找理解为一张长的纸条不断对半折
1.折半了多少次就除了多少个2,
除了多少个2,就查找了多少次
2.假设查找了x次,所以就有下面的计算
注意:我们不能去数循环,这个不一定准确,一定要用算法思想去计算
1.2时间复杂度leetcode例题
这里我们可以用异或的方法:
1.异或的特点,相同的异或结果为0,相异的异或结果为1。
2.可以利用相同的两个数异或结果为0来求得消失的那个数
解答:假设数组是0到6,7个数字,传过来是012345这5个数字,然后令x=0,分别和缺少数字的数组异或异或完再和完整的数组异或,得到的结果就是缺少的那个数字。
代码实现: