优化排版,把复杂度标记为公式
This commit is contained in:
@@ -39,7 +39,7 @@
|
||||
|
||||
去重的过程不好处理,有很多小细节,如果在面试中很难想到位。
|
||||
|
||||
时间复杂度可以做到O(n^2),但还是比较费时的,因为不好做剪枝操作。
|
||||
时间复杂度可以做到$O(n^2)$,但还是比较费时的,因为不好做剪枝操作。
|
||||
|
||||
大家可以尝试使用哈希法写一写,就知道其困难的程度了。
|
||||
|
||||
@@ -85,7 +85,7 @@ public:
|
||||
|
||||
**其实这道题目使用哈希法并不十分合适**,因为在去重的操作中有很多细节需要注意,在面试中很难直接写出没有bug的代码。
|
||||
|
||||
而且使用哈希法 在使用两层for循环的时候,能做的剪枝操作很有限,虽然时间复杂度是O(n^2),也是可以在leetcode上通过,但是程序的执行时间依然比较长 。
|
||||
而且使用哈希法 在使用两层for循环的时候,能做的剪枝操作很有限,虽然时间复杂度是$O(n^2)$,也是可以在leetcode上通过,但是程序的执行时间依然比较长 。
|
||||
|
||||
接下来我来介绍另一个解法:双指针法,**这道题目使用双指针法 要比哈希法高效一些**,那么来讲解一下具体实现的思路。
|
||||
|
||||
@@ -101,7 +101,7 @@ public:
|
||||
|
||||
如果 nums[i] + nums[left] + nums[right] < 0 说明 此时 三数之和小了,left 就向右移动,才能让三数之和大一些,直到left与right相遇为止。
|
||||
|
||||
时间复杂度:O(n^2)。
|
||||
时间复杂度:$O(n^2)$。
|
||||
|
||||
C++代码代码如下:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user