题目描述
示例
思路
贪心算法通常适用于这种需要逐步做出局部最优选择以达到全局最优解的问题,在这里使用贪心算法可以很直观地解决问题。
解题方法
1.首先定义两个数first和second
2.将nums[0]赋值给first,将Inetger.maxvalue赋值给secon
3.遍历数组,当数组某个值大于second时,返回true,大于first则将其赋值给second,小于则赋值给first。 若遍历完数组则返回false
java代码
力扣官方题解+个人注解:
class Solution {
public boolean increasingTriplet(int[] nums) {
int n = nums.length;
//若数组元素少于三个则直接返回false
if (n < 3) {
return false;
}
int first = nums[0], second = Integer.MAX_VALUE;
for (int i = 1; i < n; i++) {
int num = nums[i];
if (num > second) {
return true;
} else if (num > first) {
second = num;
} else {
first = num;
}
}
//遍历完数组则返回false
return false;
}
}
复杂度分析:
时间复杂度
只需要遍历一次数组即可获得结果,因此时间复杂度为O(n)
空间复杂度
只需要常数个额外的内存空间,因此空间复杂度为 O(1)