网易首页 > 网易号 > 正文 申请入驻

被leader公开要求滚了。。。

0
分享至

(关注数据结构和算法,了解更多新知识)

一网友在网上吐槽说自己被邀请过来做架构师,来团队一年多,没从头到尾负责过一个完整的项目,每次把事情做起来的时候就会被转到别的方向。

后来之前的项目出现了问题,又想让他回去顶着,他希望这种事适可而止,结果被领导说:我就是这种管理风格,不爱干走吧。网友评论说:多埋点坑跑路,你跑他也待不住。

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第491题:非递减子序列。

问题描述

来源:LeetCode第491题

难度:中等

给你一个整数数组 nums ,找出并返回所有该数组中不同的 递增子序列 ,递增子序列中至少有两个元素 。你可以按任意顺序返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。

示例1:


输入:nums = [4,6,7,7] 输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]

示例2:


输入:nums = [4,4,3,2,1] 输出:[[4,4]]

  • 1 <= nums.length <= 15

  • -100 <= nums[i] <= 100

问题分析

这题让找出数组中所有的递增子序列,和昨天讲的 非常类似,但这里数组中也有会有重复的元素。

因为这里求的是子序列,所以数组是不能排序的,我们可以使用集合set来剪枝,如下图所示,对于每一颗子树,如果有相同的子节点,我们只选择一个。

JAVA:

public List
       
 > findSubsequences( int[] nums) {     List > ans =  new ArrayList<>();     dfs(ans, nums,  new ArrayList<>(),  0);      return ans; } private void dfs(List > ans,  int[] nums, List  path,  int index)  {      if (path.size() >  1)         ans.add( new ArrayList<>(path));      // 记录当前层并且具有共同父节点的所有节点,不能有重复的。     Set  set =  new HashSet<>();      for ( int i = index; i < nums.length; i++) {          if (!set.add(nums[i])) // 跳过重复的              continue;          // 必须是非递减的才可以选择          if (path.isEmpty() || nums[i] >= path.get(path.size() -  1)) {             path.add(nums[i]);             dfs(ans, nums, path, i +  1);             path.remove(path.size() -  1);         }     } }

C++:

public:
    vector

 > findSubsequences(vector

  &nums) {         vector

 > ans;         vector

  path;         dfs(ans, nums, path, 0);         return ans;     }     void dfs(vector

 > &ans, vector

  &nums, vector

  &path, int index) {         if (path.size() > 1)             ans.emplace_back(path);         // 记录当前层并且具有共同父节点的所有节点,不能有重复的。         set

  s;         for (int i = index; i < nums.size(); i++) {             if (s.find(nums[i]) != s.end()) // 跳过重复的                 continue;             s.insert(nums[i]);             // 必须是非递减的才可以选择             if (path.empty() || nums[i] >= path[path.size() - 1]) {                 path.push_back(nums[i]);                 dfs(ans, nums, path, i + 1);                 path.pop_back();             }         }     }








C:

void dfs(int **ans, int *path, int count, int *nums, int numsSize, int *returnSize,          int **returnColumnSizes, int index) {
    if (count > 1) {
        ans[*returnSize] = malloc(count * sizeof(int));
        memcpy(ans[*returnSize], path, count * sizeof(int));
        (*returnColumnSizes)[(*returnSize)++] = count;
    }
    // 记录当前层并且具有共同父节点的所有节点,不能有重复的。
    int *set = calloc(201, sizeof(int));
    for (int i = index; i < numsSize; i++) {
        int key = nums[i] + 100;
        if (set[key]) // 跳过重复的
            continue;
        set[key] = 1;
        // 必须是非递减的才可以选择
        if (count == 0 || nums[i] >= path[count - 1]) {
            path[count++] = nums[i];
            dfs(ans, path, count, nums, numsSize, returnSize, returnColumnSizes, i + 1);
            count--;
        }
    }
    free(set);
}

int **findSubsequences(int *nums, int numsSize, int *returnSize, int **returnColumnSizes) {
    int **ans = malloc(100000 * sizeof(int *));
    int *path = malloc(15 * sizeof(int));
    *returnSize = 0;
    *returnColumnSizes = malloc(100000 * sizeof(int));
    dfs(ans, path, 0, nums, numsSize, returnSize, returnColumnSizes, 0);
    return ans;
}

Python:

def findSubsequences(self, nums: List[int]) -> List[List[int]]:
    def dfs(index):
        if len(path) > 1:
            ans.append(path[:])
        # 记录当前层并且具有共同父节点的所有节点,不能有重复的。
        s = set()
        for i in range(index, len(nums)):
            if nums[i] in s:  # 跳过重复的
                continue
            s.add(nums[i])
            # 必须是非递减的才可以选择
            if not path or nums[i] >= path[len(path) - 1]:
                path.append(nums[i])
                dfs(i + 1)
                path.pop()

    ans = []
    path = []
    dfs(0)
    return ans

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以 下载我整理的1000多页的PDF算法文档 。


特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
法媒:中国正用欧洲自己的武器反击欧洲

法媒:中国正用欧洲自己的武器反击欧洲

参考消息
2026-06-24 17:09:18
退休移居美国,三个孩子三个爹,53岁“东方神鹿”王军霞现状如何

退休移居美国,三个孩子三个爹,53岁“东方神鹿”王军霞现状如何

林雁飞
2026-06-24 14:17:03
0-5惨败戳破真相!亚洲4战崩盘,终于看懂日本有多离谱的强

0-5惨败戳破真相!亚洲4战崩盘,终于看懂日本有多离谱的强

林子说事
2026-06-24 09:55:51
度假的快乐:那不是逃离,是重新校准

度假的快乐:那不是逃离,是重新校准

疾跑的小蜗牛
2026-06-24 21:59:17
狂揽4.7亿,行车记录仪一哥要IPO

狂揽4.7亿,行车记录仪一哥要IPO

投资家
2026-06-24 21:25:23
广州城投,被迫动刀了

广州城投,被迫动刀了

拾遗地
2026-06-24 09:42:41
1940年,43岁于凤至胸前溃烂流脓,一老外却抱着她亲:你终于到了

1940年,43岁于凤至胸前溃烂流脓,一老外却抱着她亲:你终于到了

青途历史
2026-06-19 08:59:36
珠海交通控股集团有限公司原党委书记、董事长蒋模平被查

珠海交通控股集团有限公司原党委书记、董事长蒋模平被查

界面新闻
2026-06-24 17:29:20
肿瘤数量激增近100%,鱼油跌下神坛了?柳叶刀子刊:高剂量DHA入脑,却挡不住大脑萎缩,认知衰退无法逆转,反加快15%;且助推肿瘤生长

肿瘤数量激增近100%,鱼油跌下神坛了?柳叶刀子刊:高剂量DHA入脑,却挡不住大脑萎缩,认知衰退无法逆转,反加快15%;且助推肿瘤生长

梅斯医学
2026-06-24 07:55:01
Shams:凯尔特人正听取对布朗的报价 已有多队开始联系

Shams:凯尔特人正听取对布朗的报价 已有多队开始联系

北青网-北京青年报
2026-06-24 20:51:16
涉太子集团案,新加坡警方调查两中国男子,查封总资产已超30亿元

涉太子集团案,新加坡警方调查两中国男子,查封总资产已超30亿元

大风新闻
2026-06-24 11:54:24
曝火箭老鹰领跑布朗争夺战!美媒列交易方案:用申京+阿门换他?

曝火箭老鹰领跑布朗争夺战!美媒列交易方案:用申京+阿门换他?

罗说NBA
2026-06-24 05:48:21
日媒:中日高层时隔数月首次会谈,中方释放善意,日方称重大突破

日媒:中日高层时隔数月首次会谈,中方释放善意,日方称重大突破

老癘体育解说
2026-06-24 01:32:25
阿根廷3-0后,就换下梅西,但葡萄牙5-0时,还留C罗在场,为何?

阿根廷3-0后,就换下梅西,但葡萄牙5-0时,还留C罗在场,为何?

老霍聊球
2026-06-24 11:55:46
蔡磊回应“为自救倾家荡产,自私到老婆孩子都不顾”:任何生命为了活下去都会拼尽全力,生病前的40年里一直努力,有能力承担家庭责任

蔡磊回应“为自救倾家荡产,自私到老婆孩子都不顾”:任何生命为了活下去都会拼尽全力,生病前的40年里一直努力,有能力承担家庭责任

大象新闻
2026-06-23 10:45:40
俄媒女主持人曾言:若中国愿出兵300万,俄军很快就能打败乌克兰

俄媒女主持人曾言:若中国愿出兵300万,俄军很快就能打败乌克兰

南宗历史
2026-03-17 16:53:10
"水中黄金"重现湖北洪湖!多年没人见过, 监测队连夜启动保护

"水中黄金"重现湖北洪湖!多年没人见过, 监测队连夜启动保护

万象硬核本尊
2026-06-24 14:11:55
巴萨没戏!阿尔瓦雷斯离队仅二选一,阿森纳手握互换筹码抢占先机

巴萨没戏!阿尔瓦雷斯离队仅二选一,阿森纳手握互换筹码抢占先机

夜白侃球
2026-06-24 22:10:53
南京一高三学生获国家公派留学资格!

南京一高三学生获国家公派留学资格!

南京择校
2026-06-24 17:03:00
台积电:防了大陆几十年,结果副总是美国间谍,核心机密全被卷走

台积电:防了大陆几十年,结果副总是美国间谍,核心机密全被卷走

李健政观察
2026-06-24 17:49:59
2026-06-24 23:07:00
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
273文章数 4关注度
往期回顾 全部

科技要闻

豆包专业版上线:定价68-500元每月

头条要闻

在走廊"罚站"时看到怀孕老师摔倒 两名小学生飞奔搀扶

头条要闻

在走廊"罚站"时看到怀孕老师摔倒 两名小学生飞奔搀扶

体育要闻

字母哥,会把凯尔特人拆了吗?

娱乐要闻

向佐向佑兄弟合体直播!母子终于和解

财经要闻

逃税23亿:审计署年报直指七家机构

汽车要闻

施鹏泽:为什么奥迪E7X强调座舱气味安全?

态度原创

本地
家居
旅游
公开课
军事航空

本地新闻

2026世界杯全勤太难?这份保姆级攻略请收好

家居要闻

绿意盎然 自然之境

旅游要闻

山为骨,水为血,天地为窖,时光为曲,酿一杯迎驾山河

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

伊朗代表:霍尔木兹海峡已免费开放

无障碍浏览 进入关怀版