3637.ts 1.2 KB

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