3637.ts 1020 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // 3637. Trionic Array I
  2. function isTrionic(nums: number[]): boolean {
  3. if ( nums.length < 4 ) { return false }
  4. function isIncreasing(s, e: number): boolean {
  5. let i: number = s
  6. while ( i < e ) { if ( nums[i] >= nums[i+1] ) { return false } i++ }
  7. return true
  8. }
  9. function isDecreasing(s, e: number): boolean {
  10. let i: number = s
  11. while ( i < e ) { if ( nums[i] <= nums[i+1] ) { return false } i++ }
  12. return true
  13. }
  14. let p: number = 1
  15. let q: number = 2
  16. let nlen: number = nums.length - 1
  17. while ( true ) {
  18. if ( isIncreasing(0, p)
  19. && isDecreasing(p, q)
  20. && isIncreasing(q, nlen) ) { return true }
  21. q++
  22. if ( q >= nlen ) {
  23. p++
  24. q = p+1
  25. if ( q >= nlen ) { return false }
  26. }
  27. }
  28. return false
  29. };
  30. function main() {
  31. function r(n: number[]) { console.log(`[${n}] = ${isTrionic(n)}`) }
  32. r([1,3,5,4,2,6])
  33. r([2,1,3])
  34. r([1,2,1,2])
  35. }
  36. main()