当前位置: 面试刷题>> 递增的三元子序列 (经典算法题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 示例

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 示例

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 示例

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);

码小课网站内容分享

码小课网站上有更多关于算法和数据结构的深入讲解,包括但不限于动态规划、回溯算法、图论、排序算法等,还有丰富的实战项目和面试题解析,帮助大家更好地掌握编程技能,提升编程能力。欢迎大家访问码小课网站,共同学习进步!

推荐面试题