C语言 | Leetcode C语言题解之第491题非递减子序列

题目:

题解:

cpp 复制代码
int** ans;
int ansSize;
int* temp;
int tempSize;

void dfs(int cur, int last, int* nums, int numsSize, int** returnColumnSizes) {
    if (cur == numsSize) {
        if (tempSize >= 2) {
            ans[ansSize] = malloc(sizeof(int) * tempSize);
            memcpy(ans[ansSize], temp, sizeof(int) * tempSize);
            (*returnColumnSizes)[ansSize++] = tempSize;
        }
        return;
    }
    if (nums[cur] >= last) {
        temp[tempSize++] = nums[cur];
        dfs(cur + 1, nums[cur], nums, numsSize, returnColumnSizes);
        tempSize--;
    }
    if (nums[cur] != last) {
        dfs(cur + 1, last, nums, numsSize, returnColumnSizes);
    }
}

int** findSubsequences(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) {
    ans = malloc(sizeof(int*) * 32768);
    *returnColumnSizes = malloc(sizeof(int*) * 32768);
    temp = malloc(sizeof(int) * numsSize);
    ansSize = tempSize = 0;
    dfs(0, INT_MIN, nums, numsSize, returnColumnSizes);
    *returnSize = ansSize;
    return ans;
}
相关推荐
loser~曹8 分钟前
基于快速排序解决 leetcode hot215 查找数组中第k大的数字
数据结构·算法·leetcode
Dream it possible!14 分钟前
LeetCode 热题 100_打家劫舍(83_198_中等_C++)(动态规划)
c++·算法·leetcode·动态规划
SylviaW0823 分钟前
python-leetcode 62.搜索插入位置
数据结构·算法·leetcode
北极象1 小时前
用C实现一个最简单的正则表达式引擎
c语言·正则表达式·php
JCBP_2 小时前
数据结构4
运维·c语言·数据结构·vscode
AdrichPro2 小时前
10、Linux C 网络编程(完整版)
linux·服务器·c语言·网络
半桔2 小时前
红黑树剖析
c语言·开发语言·数据结构·c++·后端·算法
Joe_Wang52 小时前
[图论]拓扑排序
数据结构·c++·算法·leetcode·图论·拓扑排序
ty_sj3 小时前
【FreeRtos】任务调度器可以被挂起吗?
c语言·嵌入式硬件
梭七y3 小时前
【力扣hot100题】(033)合并K个升序链表
算法·leetcode·链表