|
|
@@ -4,21 +4,15 @@
|
|
|
function isTrionic(nums: number[]): boolean {
|
|
|
if ( nums.length < 4 ) { return false }
|
|
|
|
|
|
- function isIncreasing(ns: number[]): boolean {
|
|
|
- let len: number = ns.length
|
|
|
- if ( len == 1 ) { return false }
|
|
|
- len--
|
|
|
- let i: number = 0
|
|
|
- while ( i < len ) { if ( ns[i] >= ns[i+1] ) { return false } i++ }
|
|
|
+ function isIncreasing(s, e: number): boolean {
|
|
|
+ let i: number = s
|
|
|
+ while ( i < e ) { if ( nums[i] >= nums[i+1] ) { return false } i++ }
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
- function isDecreasing(ns: number[]): boolean {
|
|
|
- let len: number = ns.length
|
|
|
- if ( len == 1 ) { return false }
|
|
|
- len--
|
|
|
- let i: number = 0
|
|
|
- while ( i < len ) { if ( ns[i] <= ns[i+1] ) { return false } i++ }
|
|
|
+ function isDecreasing(s, e: number): boolean {
|
|
|
+ let i: number = s
|
|
|
+ while ( i < e ) { if ( nums[i] <= nums[i+1] ) { return false } i++ }
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -27,9 +21,9 @@ function isTrionic(nums: number[]): boolean {
|
|
|
let nlen: number = nums.length - 1
|
|
|
|
|
|
while ( true ) {
|
|
|
- if ( isIncreasing(nums.slice(0, p+1))
|
|
|
- && isDecreasing(nums.slice(p, q+1))
|
|
|
- && isIncreasing(nums.slice(q)) ) { return true }
|
|
|
+ if ( isIncreasing(0, p)
|
|
|
+ && isDecreasing(p, q)
|
|
|
+ && isIncreasing(q, nlen) ) { return true }
|
|
|
q++
|
|
|
if ( q >= nlen ) {
|
|
|
p++
|