2 回答
![?](http://img1.sycdn.imooc.com/54584c5e0001491102200220-100-100.jpg)
TA贡献1796条经验 获得超7个赞
public boolean increasingTriplet(int[] nums) {
int first=Integer.MAX_VALUE;
int second=Integer.MAX_VALUE;
int third=Integer.MAX_VALUE;
for(int p=0; i<nums.length; p++){
if(nums[p]<=third){
third=nums[p];
}else{
if(nums[p]<=second){
first=third;
second=nums[p];
}else{
return true;
}
}
}
return false;
}
该代码背后的全部思想是,如果我们发现一对值按升序排列,则只有在新对的第一个值小于旧对的第一个值时,才可以用新的对数递增序列替换该对。新对的第二个值小于旧对的第二个值。同时,我们检查数字是否大于将完成序列的第二个数字(true在这种情况下,我们将返回)。
代码开始比较值从第三到第二,而不是第一到第二,但是思想与上面相同。
![?](http://img1.sycdn.imooc.com/54584f240001db0a02200220-100-100.jpg)
TA贡献1801条经验 获得超16个赞
这是一种可能的解决方案:
public static boolean increasingTriplet(int[] nums) {
for (int i = 0; i < nums.length-2; ++i) {
for (int j = i+1; j < nums.length-1; ++j) {
if (nums[j] > nums[i]) {
for (int k = j+1; k < nums.length; ++k) {
if (nums[k] > nums[j]) {
return true;
}
}
}
}
}
return false;
}
添加回答
举报