和Next Greater Element I的区别就是array变成了环状,解法仍然是类似的。如果我们只从右向左扫一遍的话,是不够的。因为可能满足条件的数在当前数nums[i]的左边,我们只需要保持stack的状态,在从右向左扫一遍即可。时间复杂度O(n),空间复杂度O(n)。代码如下:
另一种做法,我们找到nums当中的最大数max,然后从max开始从右向左round-robin式地扫一遍就行了。应为max可以当做绝对的右边界,所有的数,要么在其或者其之前的位置找到答案,要不不存在答案。时间复杂度O(n),空间复杂度O(n)。代码如下:
No comments:
Post a Comment