정수 배열 nums가 주어지면 i < j < k 및 nums[i] < 숫자[j] < 숫자[k]. 해당 인덱스가 없으면 false를 반환합니다.
O(n) 시간 복잡도와 O(1) 공간 복잡도에서 실행되는 솔루션을 구현할 수 있나요?
이 문제를 효율적으로 해결하려면 지금까지 발생한 가장 작은 값과 두 번째로 작은 값을 추적해야 합니다. 두 번째로 작은 값보다 큰 세 번째 값을 찾으면 증가하는 삼중항을 찾은 것입니다.
무차별 대입 솔루션은 가능한 모든 삼중항을 검사하여 조건 i < j < k 및 nums[i] < 숫자[j] < 숫자[k]. 이 접근 방식은 O(n^3)의 시간 복잡도를 가지므로 큰 입력 크기에는 효율적이지 않습니다.
function increasingTripletBruteForce(nums: number[]): boolean { const n = nums.length; for (let i = 0; i < n - 2; i++) { for (let j = i + 1; j < n - 1; j++) { for (let k = j + 1; k < n; k++) { if (nums[i] < nums[j] && nums[j] < nums[k]) { return true; } } } } return false; }
무차별 대입 솔루션은 효율적이지 않으며 큰 입력 크기에 적합하지 않습니다.
최적화된 솔루션에는 지금까지 발견된 가장 작은 값과 두 번째로 가장 작은 값을 나타내는 두 개의 변수인 첫 번째와 두 번째를 유지하면서 배열을 반복하는 작업이 포함됩니다. 초보다 큰 값을 찾으면 true를 반환합니다.
function increasingTriplet(nums: number[]): boolean { let first = Infinity; let second = Infinity; for (let num of nums) { if (num <= first) { first = num; // smallest value } else if (num <= second) { second = num; // second smallest value } else { return true; // found a value greater than second smallest, thus an increasing triplet exists } } return false; }
console.log(increasingTripletBruteForce([1,2,3,4,5])); // true console.log(increasingTripletBruteForce([5,4,3,2,1])); // false console.log(increasingTripletBruteForce([2,1,5,0,4,6])); // true console.log(increasingTripletBruteForce([1,1,1,1,1])); // false console.log(increasingTripletBruteForce([1,2])); // false console.log(increasingTripletBruteForce([1,2,3])); // true console.log(increasingTripletBruteForce([1,5,0,4,1,3])); // true console.log(increasingTriplet([1,2,3,4,5])); // true console.log(increasingTriplet([5,4,3,2,1])); // false console.log(increasingTriplet([2,1,5,0,4,6])); // true console.log(increasingTriplet([1,1,1,1,1])); // false console.log(increasingTriplet([1,2])); // false console.log(increasingTriplet([1,2,3])); // true console.log(increasingTriplet([1,5,0,4,1,3])); // true
하위 배열 문제:
2점슛 기법:
내부 알고리즘:
이러한 문제와 전략을 연습함으로써 문제 해결 능력을 향상시키고 다양한 코딩 과제에 더 잘 대비할 수 있습니다.
위 내용은 Typescript Coding Chronicles: 삼중항 하위 시퀀스 증가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!