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;
}
相关推荐
Swift社区3 小时前
LeetCode 427 - 建立四叉树
算法·leetcode·职场和发展
万事可爱^4 小时前
GitHub爆火开源项目——RustScan深度拆解
c语言·开发语言·rust·开源·github·rustscan
墨染点香4 小时前
LeetCode 刷题【160. 相交链表】
算法·leetcode·链表
少睡点觉4 小时前
LeetCode 238. 除自身以外数组的乘积 问题分析+解析
java·算法·leetcode
YoungHong19924 小时前
面试经典150题[066]:分隔链表(LeetCode 86)
leetcode·链表·面试
冉佳驹5 小时前
数据结构 ——— 八大排序算法的思想及其实现
c语言·数据结构·排序算法·归并排序·希尔排序·快速排序·计数排序
异步的告白7 小时前
C语言-数据结构-2-单链表程序-增删改查
c语言·开发语言·数据结构
Wenhao.7 小时前
LeetCode 救生艇
算法·leetcode·golang
超级无敌大学霸7 小时前
二分查找和辗转相除法
c语言·算法
夏鹏今天学习了吗7 小时前
【LeetCode热题100(69/100)】字符串解码
linux·算法·leetcode