Skip to content

Commit

Permalink
Update Readme.md
Browse files Browse the repository at this point in the history
  • Loading branch information
wisdompeak authored Apr 16, 2023
1 parent cc9a1c2 commit 51d690a
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions Two_Pointers/1004.Max-Consecutive-Ones-III/Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
以上方法的两层循环的时间复杂度是o(NK),显然会超时。

#### 解法2:双指针
对于任何求subarray的问题,我们通常的做法就是固定左边界,探索右边界。假设我们固定左边界是i,那么要使右边界j最远,需要满足[i,j]最多有K个0。我们只需要将j单调右移,同时记录中间遇到了几个0即可。
对于任何求subarray的问题,我们通常的做法就是固定左边界,探索右边界。假设我们固定左边界是`i`,那么要使右边界`j`最远,需要满足[i,j]最多有K个0。我们只需要将`j`单调右移,同时记录中间遇到了几个0即可。

综上,我们用for循环遍历左边界i:对于每个i我们记录移动右指针j时经过了几个0,将j停在count为K的最远位置。然后左移一个i并更新count(如果A[i]原本是0的话,我们要吐出一个flip的名额),再接着移动j的位置
综上,我们用for循环遍历左边界`i`:对于每个`i`我们记录移动右指针`j`,将`j`停在count为K的最远位置。然后左移一个`i`并更新count(如果A[i]原本是0的话,我们要吐出一个flip的名额),再接着移动`j`的位置

所以两个指针都只会朝一个方向移动。这是快慢类型的双指针,时间复杂度就是o(N).

0 comments on commit 51d690a

Please sign in to comment.