当前位置: 首页 > news >正文

50.日常算法

1. 非递减子序列

题目来源
给你一个整数数组 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]]

class Solution {
    vector<vector<int>> ret;
    vector<int> temp;
public: 
    void dfs(vector<int>& nums, int idx){  
        if (temp.size() >= 2) ret.push_back(temp);
        unordered_set<int> hash;
        for (int i = idx; i < nums.size(); ++i){
            if ((!temp.empty() && temp.back() > nums[i]) || (hash.find(nums[i]) != hash.end())) continue;
            hash.insert(nums[i]);
            temp.push_back(nums[i]);
            dfs(nums, i + 1);
            if (temp.size() > 0) temp.pop_back();
        }
    }
    vector<vector<int>> findSubsequences(vector<int>& nums) {
        dfs(nums, 0);
        return ret;
    }
};

2. 爬楼梯

题目来源

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶
// 注意:这里不能使用递归,递归会超时
class Solution {
public:
    int climbStairs(int n) {
        int i = 1;
        int j = 2;
        if (n == 1) return 1;
        if (n == 2) return 2;
        int ret = 0;
        for (int k = 3; k <= n; ++k){
            ret = i + j;
            i = j;
            j = ret;
        }
        return ret;
    }
};

相关文章:

  • 算法进阶——枚举
  • Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境
  • Python 错误和异常处理:守护程序的稳定运行
  • 无耳 Solon v3.1.0 全新发布(可全面替换 Java Spring 生态)
  • 18k star,取代Navicat!一款集成了AI功能的数据库管理工具!
  • 带触屏笔记本关闭屏幕触控方法
  • redis测评
  • 深度求索(DeepSeek)开源周技术全景与行业影响研究报告
  • 信息安全之构建FTP服务器证书
  • Golang集成企业微信接收消息服务处理URL接口(验证、解密)信息(GoFly快速开发框架)
  • 基于vue3的刻度尺组件
  • 什么是全栈?
  • 【人工智能技术发展路径:从符号学习到深度学习的演进】
  • 大模型FunctionCall-知识整理
  • 利率债、信用债、可转债区别与优势
  • STM32L051系列单片机低功耗应用
  • AcWing 蓝桥杯集训·每日一题2025·5526. 平衡细菌
  • 以实例解析汇编语言和高级语言
  • RCE漏洞
  • OpenWrt如何配置WireGuard互联?
  • 网页设计公司费用低/百度首页排名优化服务
  • 新农村建设的网站/网站播放视频速度优化
  • 购物网站页面设计/怎么投放广告是最有效的
  • 广州手机网站定制信息/浙江搜索引擎优化
  • 白云区网站开发公司电话/seo是什么意思知乎
  • nodejs可以做网站吗/今日新闻最新消息50字