๐๐๐ 334. ้ๅข็ไธๅ ๅญๅบๅ
2022ๅนด10ๆ10ๆฅ
- algorithm
๐๐๐ 334. ้ๅข็ไธๅ ๅญๅบๅ
้พๅบฆ: ๐๐๐
้ฎ้ขๆ่ฟฐ
่งฃๆณ
class Solution {
public boolean increasingTriplet(int[] nums) {
// ๆ่ทฏ๏ผ
// ๆๅ
ๆณๅฐ็ๆฏ ๆ้ฟ้ๅขๅบๅ ้ฃ้้ข๏ผ่ฅ็ๅ ๆฐ >= 3 ๅฐฑๅฏไปฅ็ดๆฅ่ฟๅ๏ผไฝๆฏ่ฟๆ ทๅคๆๅบฆไธบ O(NlogN)
// ่ฟ้้ขๅฏไปฅ้ไฝๅคๆๅบฆ๏ผๆ ้้ๅ็ๅ ๆพๅฐๆๅ
ฅไฝ็ฝฎ๏ผๅ ไธบ ๆๅคๅชๆ 2 ไธช็ๅ ๏ผ้่ฟๅชไฟๅญ ๅ 2 ไธช็ๅ ็ๆๅฐๅผ๏ผไธๆฌก้ๅๅณๅฏ
int len = nums.length;
if(len < 3) {
return false;
}
int first = nums[0]; // ไธไธชๆฐไธญ็ๆๅฐๅผ๏ผไธๆ ๅผไนๆฏไธไธชไธญๆๅฐ็
int second = -1;
boolean flag = false; // ่กจ็คบ็ฌฌไบไธชๆฐ่ฟๆฒกๆๆพๅฐๅ้็
for(int i = 1; i < len; i ++) {
int cur = nums[i];
// System.out.println(first + " : " + second + " " + cur);
// ๆๅธๆ็ๆ
ๅตๆฏ first & second ๅๅทฒๆพๅฐ๏ผไธ cur ๆปก่ถณ cur > second
if(flag && cur > second) {
return true; //็ธๅฝไบๅจๅๆ 2 ไธช็ๅ ็ๅบ็กไธๆฐๅปบไธไธช็ๅ ๏ผ่พพๅฐ 3 ไธช็ๅ ๏ผ็ดๆฅ่ฟๅ
}
// ๅคๆญๆฐ็็็ๆๅ
ฅไฝ็ฝฎ
if(cur <= first) {
first = cur;
} else {
// ๆๅ
ฅ็ฌฌไบไธช็ๅ
second = cur;
flag = true;
}
}
return false;
}
}