当前位置: 面试刷题>> 递增的三元子序列 (经典算法题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);
```
### 码小课网站内容分享
码小课网站上有更多关于算法和数据结构的深入讲解,包括但不限于动态规划、回溯算法、图论、排序算法等,还有丰富的实战项目和面试题解析,帮助大家更好地掌握编程技能,提升编程能力。欢迎大家访问码小课网站,共同学习进步!