这道题想了好久,想不出来。这道题用了巧妙的方法
定义两个变量,一个保存最小值,并且不断更新,如果 nums[i]<=small,则small = nums[i]
然后另一个变量mid,保存中间值, 如果 nums[i] > small && nums[i] <=mid,就更新mid
最后如果还有一个数 nums[i] > mid 说明就存在这样一个三元子。
有一个小技巧就是,假设现在的 small = 3 mid = 5,又来了一个数1 比small小,此时更新small的值,那么small和mid的值就不是按照递增序列的,但是这里隐藏着一个事实就是,存在一个比现在small大,而比mid小的 前最小值,因此只要在出现一个比mid大的值,也是符合要求的。
题目 code
网友评论