码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • day31 代码随想录 分发饼干&摆动序列&最大子序和


    大纲

    ● 理论基础
    ● 455.分发饼干
    ● 376. 摆动序列
    ● 53. 最大子序和

    455.分发饼干

    题目:455.分发饼干

    // 分发饼干
    // 有数组g代表胃口大小,数组s代表饼干大小
    // 求满足最多胃口的值
    // 思路是对g s排序
    // 优先选择最大的饼干满足最大的胃口
    // [1,2,3] [1,1]
    int fitChildVal(vector& g, vector& s)
    {
        sort(g.begin(), g.end());
        sort(s.begin(), s.end());
    
        int index = s.size() - 1, count = 0;
        for (int i = g.size() - 1; i >= 0; --i) {
            if (index >= 0 && s[index] >= g[i]) {
                index--;
                count++;
            }
        }
        return count;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    376. 摆动序列

    题目:376. 摆动序列

    // 给定一个数组arr,判断里面是摆动序列组合的最大长度
    // 思路是计算相邻数据的差形成一个数组,然后删除相邻同符号的值
    // 返回剩下数组长度+1
    // 可以优化为一个变量统计和一个变量记录上一个值,减少空间复杂度
    // 忘记处理val为0的情况了
    int maxUpDownArrayLength(vector& nums) {
    //    vector plusVec;
        int lastVal = 0;
        int count = 0;
        for (int i = 1; i < nums.size(); ++i) {
            int val = nums[i] - nums[i - 1];
            if (val == 0) continue;
            if (count !=0 && lastVal > 0 && val > 0)
                continue;
            if (count !=0 && lastVal < 0 && val < 0)
                continue;
            lastVal = val;
    //        plusVec.push_back(val);
            count++;
        }
    
        return count + 1;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    53. 最大子序和

    题目:53. 最大子序和

    // 最大子数组和
    // 遍历所有种可以的子数组,分别统计最大和 取最大值
    // O(n ^ 2)时间复杂度
    
    // 用递归吧
    // 结束条件是抵达最后元素值
    // 参数是开始的元素下标
    // 循环体,遍历元素
    //
    // 但是行不通,原因在于递归使其遍历了所有组合可能,而不是仅仅相邻的
    int maxSum = INT_MIN;
    void _maxSub(vector& nums, int& pathSum, int startIndex)
    {
        if (startIndex >= nums.size()) return;
        if (maxSum < pathSum)
            maxSum = pathSum;
    
        for (int i = startIndex; i < nums.size(); ++i) {
            pathSum += nums[i];
            _maxSub(nums, pathSum, i + 1);
            pathSum -= nums[i];
        }
    }
    
    int maxSubArraySum(vector& nums) {
        int pathSum = 0;
        _maxSub(nums, pathSum, 0);
        return maxSum;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    总结

    贪心的解法比较难想到解决办法,也没有太多规律,需要自己多熟悉

  • 相关阅读:
    农村人口房屋管理系统(VB+access)
    UDS入门至精通系列:Service 23
    30 | 工欲善其事必先利其器:后端性能测试工具原理与行业常用工具简介
    如何远程访问Linux MeterSphere一站式开源持续测试平台
    博客摘录「 hyperf使用jwt的redis储存驱动实现用户token认证」2024年4月9日
    PI3K α/β 靶向抑制剂协同 BCL-2 阻断过程可用于治疗 DLBCL
    《简约至上》读书笔记
    用GDB调试程序的栈帧
    项目实战第三十四讲:标准中心-SPU体系
    数据结构与算法------回溯算法
  • 原文地址:https://blog.csdn.net/love_0_love/article/details/132953271
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号