995
1k8的hard题,忍住了没看答案,但是想了半天还是不会做,看了topics有queue然后眼前一亮做出来了。我总结了以下:
- 若以
i
为起点,那么i
将不会再被改变。这意味着如果我们只经过一次的情况下,只能以nums[i] == 0
的i
作为起点。 - 以1作为起点,那么
i
后面k
个数该怎么处理呢?在我没有想到queue之前想了很多种方法但worst case都是, 为什么用queue就可以呢?因为queue有先进先出的特点,这意味着我们在看i
时可以通过判断queue的front来判断i
是否在影响范围内。 - 紧接着2,我们还可以用queue的size来判断
i
会被影响几次,然后再结合1就可以贪心来得到答案