정수 배열 nums가 주어지면 i
O(n) 시간 복잡도와 O(1) 공간 복잡도에서 실행되는 솔루션을 구현할 수 있나요?
이 문제를 효율적으로 해결하려면 지금까지 발생한 가장 작은 값과 두 번째로 작은 값을 추적해야 합니다. 두 번째로 작은 값보다 큰 세 번째 값을 찾으면 증가하는 삼중항을 찾은 것입니다.
무차별적인 해결책은 i
function increasingTripletBruteForce(nums: number[]): boolean { const n = nums.length; for (let i = 0; i시간 복잡도 분석:
무차별 대입 솔루션은 효율적이지 않으며 큰 입력 크기에 적합하지 않습니다.
최적화된 솔루션에는 지금까지 발견된 가장 작은 값과 두 번째로 가장 작은 값을 나타내는 두 개의 변수인 첫 번째와 두 번째를 유지하면서 배열을 반복하는 작업이 포함됩니다. 초보다 큰 값을 찾으면 true를 반환합니다.
function increasingTriplet(nums: number[]): boolean { let first = Infinity; let second = Infinity; for (let num of nums) { if (num시간 복잡도 분석:
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
하위 배열 문제:
두 포인터 기법:
내부 알고리즘:
이러한 문제와 전략을 연습함으로써 문제 해결 능력을 향상시키고 다양한 코딩 과제에 더 잘 대비할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3