当前位置: 面试刷题>> 递增的三元子序列 (经典算法题500道)


### 题目描述补充 题目:递增的三元子序列 给定一个未排序的整数数组 `nums`,你需要找到并返回其中所有长度为3的递增子序列。递增子序列指的是由三个或更多个连续递增元素组成的序列,但本题仅要求找出长度为3的递增子序列。注意,返回的序列中的元素需要按原数组中的相对顺序排列。 ### 示例 **输入**: `[1, 2, 3, 4, 6]` **输出**: `[[1, 2, 3], [1, 2, 4], [1, 2, 6], [2, 3, 4], [2, 3, 6], [3, 4, 6]]` **解释**: 数组中存在多个长度为3的递增子序列,如上所示。 ### 示例代码 #### PHP 示例 ```php function findIncreasingTriplet($nums) { $result = []; $n = count($nums); if ($n < 3) return $result; for ($i = 0; $i < $n - 2; $i++) { for ($j = $i + 1; $j < $n - 1; $j++) { if ($nums[$j] > $nums[$i]) { for ($k = $j + 1; $k < $n; $k++) { if ($nums[$k] > $nums[$j]) { $result[] = [$nums[$i], $nums[$j], $nums[$k]]; } } } } } return $result; } // 示例用法 $nums = [1, 2, 3, 4, 6]; $result = findIncreasingTriplet($nums); print_r($result); ``` #### Python 示例 ```python def findIncreasingTriplet(nums): result = [] n = len(nums) if n < 3: return result for i in range(n - 2): for j in range(i + 1, n - 1): if nums[j] > nums[i]: for k in range(j + 1, n): if nums[k] > nums[j]: result.append([nums[i], nums[j], nums[k]]) return result # 示例用法 nums = [1, 2, 3, 4, 6] result = findIncreasingTriplet(nums) print(result) ``` #### JavaScript 示例 ```javascript function findIncreasingTriplet(nums) { const result = []; const n = nums.length; if (n < 3) return result; for (let i = 0; i < n - 2; i++) { for (let j = i + 1; j < n - 1; j++) { if (nums[j] > nums[i]) { for (let k = j + 1; k < n; k++) { if (nums[k] > nums[j]) { result.push([nums[i], nums[j], nums[k]]); } } } } } return result; } // 示例用法 const nums = [1, 2, 3, 4, 6]; const result = findIncreasingTriplet(nums); console.log(result); ``` ### 码小课网站内容分享 码小课网站上有更多关于算法和数据结构的深入讲解,包括但不限于动态规划、回溯算法、图论、排序算法等,还有丰富的实战项目和面试题解析,帮助大家更好地掌握编程技能,提升编程能力。欢迎大家访问码小课网站,共同学习进步!
推荐面试题