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

5.20 note

不用if else实现递归

原代码

class Solution {

public:

    int mechanicalAccumulator(int target) {

        if (target == 0) return 0; // 终止条件:基准情况

        return target + mechanicalAccumulator(target - 1); // 递归累加

    }

};

变形

 

class Solution {
public:
    int mechanicalAccumulator(int target) {
       target!=1 &&
       (target+=mechanicalAccumulator(target-1));
       return target;
    }
};

 


异或实现数字交换

class Solution {
    public int[] swapNumbers(int[] numbers) {
        // 根据异或性质来做
        // 0 ^ x = x
        // x ^ x = 0

        numbers[0] = numbers[0] ^ numbers[1];
        numbers[1] = numbers[0] ^ numbers[1];
        numbers[0] = numbers[0] ^ numbers[1];
        return numbers;
    }
}

 

预处理 解决超时优化

class Solution {
public:
    vector<vector<int>> onesMinusZeros(vector<vector<int>>& grid) {
        int m = grid.size(), n = grid[0].size();
        vector<int> rowOnes(m), colOnes(n);
        
        // 计算每行和每列的1的数量
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                rowOnes[i] += grid[i][j];
                colOnes[j] += grid[i][j];

            }
        }
        
        vector<vector<int>> ret(m, vector<int>(n));
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                ret[i][j] = 2 * (rowOnes[i] + colOnes[j]) - m - n;
            }
        }
        return ret;
    }
};
 

 

二进制可以用 recode记录*2

 

上升下降字符串

(一道字典序的题目

两点

  • 有点类似于 hash的桶排序,不过hash是无序的
  • 学到了if不加大括号的写法,用逗号不用分号就行

class Solution {
public:
    //题目描述的复杂,其实就是不停地按字典序升序追加,降序追加,每次加一个
    string sortString(string s) {
        vector<int>tmp(26);
        for(int i=0;i<s.size();i++)
            tmp[s[i]-'a']++;
        string ret;
        while(ret.size()<s.size())
        {
            for(int i=0;i<26;i++)
                if(tmp[i])
                    ret+=i+'a',tmp[i]--;
            for(int i=25;i>=0;i--)
                if(tmp[i])
                    ret+=i+'a',tmp[i]--;

        }
        return ret;
    }
};

瀑布模型

 - 优点:阶段清晰,文档规范,便于管理,适合需求稳定、技术成熟项目。

- 缺点:灵活性差,需求变更修改成本高,依赖前期精准分析 。

 

敏捷模型

 - 优点:灵活,能快速响应需求变更,强调协作,交付快。

- 缺点:文档不严格,对团队要求高,管理难度大,规划易模糊。

 

瀑布模型和螺旋模型

  • 瀑布模型 是简单线性的
  • 螺旋模型 在线性每一步推进中  都加入了风险分析➕原型,意义:   减少 出现问题到最后一步才反版的问题

瀑布模型和螺旋模型是两种常见的软件开发过程模型,它们在项目管理和软件开发中有着不同的应用场景和特点。

瀑布模型

1. 定义与特点

    - 瀑布模型是一种线性顺序的软件开发模型,项目开发过程被划分为需求分析、系统设计、实现、测试和维护等阶段,每个阶段依次进行,前一阶段的输出作为后一阶段的输入。

2. 优点

    - 过程清晰:每个阶段有明确的目标和任务,便于管理和控制。

    - 文档齐全:每个阶段产生详细的文档,便于后期维护和升级。

3. 缺点

    - 缺乏灵活性:一旦进入下一阶段,修改需求成本高,难以适应需求变化。

    - 风险较高:测试阶段在开发后期,若发现重大问题,可能需要重新开发,增加成本和风险。

4. 适用场景

    - 需求明确且变化不大的项目。

    - 项目规模较小、技术成熟的项目。

螺旋模型

1. 定义与特点

    - 螺旋模型是一种风险驱动的过程模型,结合了瀑布模型和快速原型模型的优点,通过迭代的方式不断细化需求和设计,降低项目风险。

    - 每个迭代周期包括需求分析、风险分析、工程实施和客户评审,强调风险管理。

2. 优点

    - 风险管理:每个迭代周期进行风险分析,及时发现和解决问题,降低项目风险。

    - 灵活性强:允许在每个迭代周期内进行需求和设计的修改,快速响应需求变化。

3. 缺点

    - 复杂度高:过程复杂,管理和控制难度大,需要经验丰富的项目经理。

    - 成本较高:多次迭代和风险分析增加了开发成本。

4. 适用场景

    - 大型和复杂的系统,需求不确定且风险较高的项目。

    - 内部开发的大规模软件项目。

 

打家劫舍 复习

依据 题目 所给的 相邻不能选规则
f[i]=g[i-1]+nums[i] //选 i
g[i]=max(f[i-1],g[i-1]) //不选 i

 

http://www.xdnf.cn/news/548533.html

相关文章:

  • 什么是 AI 人工智能?什么是机器学习?什么是深度学习?三者啥关系
  • 基于AutoDL市场下的Pycharm远程控制
  • Redis从入门到实战 - 高级篇(中)
  • Jedis快速入门【springboot】
  • NMOS和PMOS的区别
  • 大语言模型 14 - Manus 超强智能体 开源版本 OpenManus 上手指南
  • 从混乱到高效:我们是如何重构 iOS 上架流程的(含 Appuploader实践)
  • 南柯电子|储能EMC整改:从单点整改到智能预测的进化路径
  • 瑞萨单片机笔记
  • #渗透测试#批量漏洞挖掘#LiveBos UploadFile(CVE-2021-77663-2336) 任意文件上传漏洞
  • Translational Psychiatry | 注意缺陷多动障碍儿童延迟厌恶的行为与神经功能特征茗创科技茗创科技
  • MySQL与Redis一致性问题分析
  • 数据库与存储安全
  • DeepSeek在政务与公共服务中的智能化实践
  • 中国国际软件发展大会荣誉揭晓,远光九天 AI 应用开发平台获评“软件行业突破性技术成果”
  • 多模态实时交互边界的高效语音语言模型 VITA-Audio 介绍
  • 全球氰化物测定仪市场:现状、趋势与展望
  • PLC系统中开关量与模拟量信号解析
  • 跳空高低开策略思路
  • 优化Hadoop性能:如何修改Block块大小
  • SpringBoot与GeoHash整合,实现骑手就近派单功能
  • Go语言实战:使用 excelize 实现多层复杂Excel表头导出教程
  • Github 2025-05-20Python开源项目日报 Top9
  • 重要通知!!2025年上半年软考考试准考证打印通知(附各地区打印时间表)
  • 【Java】继承和多态在 Java 中是怎样实现的?
  • Token的组成详解:解密数字身份凭证的构造艺术
  • AI与产品架构设计(6):Agent与知识图谱结合在云服务与通用场景中的应用实践
  • 深入探索百度智能云千帆AppBuilder:从零开始构建AI应用
  • 在 Kotlin 中,什么是内联函数?有什么作用?
  • 基于Java的校运会管理系统【附源码】