【代码随想录】刷题笔记Day34

前言

  • 考过概率论,发过一场烧,兜兜转转又一月,轻舟已撞万重山,赶紧刷题

贪心算法理论基础

  • 贪心的本质:局部最优→全局最优
  • 无套路,常识性推导 + 举反例

455. 分发饼干 - 力扣(LeetCode)

  • 先排序,局部最优:最大/小的饼干分给最大/小的小孩,秒了
  • class Solution {
    public:
        int findContentChildren(vector<int>& g, vector<int>& s) {
            sort(g.begin(), g.end());
            sort(s.begin(), s.end());
            int j = s.size() - 1;
            int sum = 0;
            for(int i = g.size() - 1; i >= 0; i--){
                if(j >= 0 && s[j] >= g[i]){
                    sum++;
                    j--;
                }
            }
            return sum;
        }
    };

 376. 摆动序列 - 力扣(LeetCode)

  • 情况一:上下坡中有平坡,取一边的差值等于0
  • 情况二:数组首尾两端,取一个虚拟头,preDiff初始为1
  • 情况三:单调坡中有平坡,遇到拐点再更新prediff
  • class Solution {
    public:
        int wiggleMaxLength(vector<int>& nums) {
            if (nums.size() <= 1) return nums.size();
            int curDiff = 0; // 当前一对差值
            int preDiff = 0; // 前一对差值
            int result = 1;  // 记录峰值个数,序列默认序列最右边有一个峰值
            for (int i = 0; i < nums.size() - 1; i++) {
                curDiff = nums[i + 1] - nums[i];
                // 出现峰值
                if ((preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0)) {
                    result++;
                    preDiff = curDiff; // 注意这里,只在摆动变化的时候更新prediff
                }
            }
            return result;
        }
    };
  • // 题解来的代码,类似自己起初的思路(可惜自己用flag-1/1调不出来)
    class Solution {
    public:
        int wiggleMaxLength(vector<int>& nums) {
            int res = 0;
            int reverse = 0; //初始不知道第一次会上坡还是下坡
            for(int i = 1; i < nums.size(); i++){
                if(nums[i-1]<nums[i] && reverse != 1){  // 这个≠很精髓
                    res++;
                    reverse = 1;//记录上坡了
                }
                else if(nums[i-1]>nums[i] && reverse != 2){
                    res++;
                    reverse = 2;//记录下坡了
                } 
            }
            return res + 1; //res是两两比较得来的值,差一个边界值要+1
        }
    };

 53. 最大子数组和 - 力扣(LeetCode)

  • 贪心思路:若连续和为负数,则从下一个数重新开始求连续和
  • 注意:用result及时记录连续和的最大值(也可能是负的)
  • class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
            int result = INT32_MIN;
            int count = 0;
            for (int i = 0; i < nums.size(); i++) {
                count += nums[i];
                if (count > result) { // 取区间累计的最大值(相当于不断确定最大子序终止位置)
                    result = count;
                }
                if (count <= 0) count = 0; // 相当于重置最大子序起始位置,因为遇到负数一定是拉低总和
            }
            return result;
        }
    };

后言

  • 第二题死磕太久了,蓝受,一下子就10点了,贪心第一次做好难想哦~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/239420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FastAPI之响应模型

前言 响应模型我认为最主要的作用就是在自动化文档的显示时&#xff0c;可以直接给查看文档的小伙伴显示返回的数据格式。对于后端开发的伙伴来说&#xff0c;其编码的实际意义不大&#xff0c;但是为了可以不用再额外的提供文档&#xff0c;我们只需要添加一个 response_mod…

慢SQL诊断

最近经常遇到技术开发跑来问我慢SQL优化相关工作&#xff0c;所以干脆出几篇SQL相关优化技术月报&#xff0c;我这里就以公司mysql一致的5.7版本来说明下。 在企业中慢SQL问题进场会遇到&#xff0c;尤其像我们这种ERP行业。 成熟的公司企业都会有晚上的慢SQL监控和预警机制。…

784. 字母大小写全排列

字母大小写全排列 描述 : 给定一个字符串 s &#xff0c;通过将字符串 s 中的每个字母转变大小写&#xff0c;我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。 回文串 是正着读和反着读都一样的字符串。 题目 : LeetCode 784. 字母…

Linux--操作系统

1. 常见的操作系统 Windowsmac OSLinuxiOSAndroid 2. 操作系统的定义 操作系统直接运行在计算机上的系统软件&#xff0c; 它是控制硬件和支持软件运行的计算机程序。 3. 操作系统的作用 向下控制硬件向上支持软件的运行&#xff0c;具有承上启下的作用。 4.总结 操作系统…

集合03 Collection (List) - Java

List ArrayListArrayList注意事项ArrayList底层操作机制-源码分析&#xff08;重点&#xff09; VectorVector基本介绍 ——Vector和ArrayList比较Vector底层结构和源码分析 LinkedList基本介绍LinkedList的底层结构和操作机制LinkedList的增删改查 ——LinkedList和ArrayList比…

12.字符串拼接【2023.12.4】

1.问题描述 我们在编程过程中经常会遇到把不同字符串拼接在一起的情况&#xff0c;从而更直观地展示给用户我们所要表达的信息。本题将给出两个字符串&#xff0c;请依次将这两个字符串拼接在一起。 2.解决思路 用字符串拼接符 进行连接两个字符串 3.代码实现 str1input(…

我的创作三周年纪念日

今天收到CSDN官方的来信&#xff0c;创作三周纪念日到了。 Dear: Hann Yang &#xff0c;有幸再次遇见你&#xff1a; 还记得 2020 年 12 月 12 日吗&#xff1f; 你撰写了第 1 篇技术博客&#xff1a; 《vba程序用7重循环来计算24》 在这平凡的一天&#xff0c;你赋予了它…

【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)

Unable to start embedded Tomcat&#xff08;已解决&#xff09; 一、背景介绍二、原因分析2.1 网络上整理2.2 其他原因 三、解决方案 一、背景介绍 spring boot(v2.5.14) maven idea 启动项目 之前项目一直启动的好好的&#xff0c;都能正常运行。重启的时候突然就不能启…

鸿蒙(HarmonyOS)应用开发——简易版轮播图

简述 轮播图在应用中&#xff0c;已经很常见的展现方式。像uniapp、iview&#xff0c;viewUI等前端组件框架&#xff0c;都提供了轮播图组件。那么在harmonyOS中&#xff0c;如果要实现轮播&#xff0c;我们是使用swiper 组件 swiper组件 swiper 组件是一种容器组件。它提供…

Linux---虚拟机软件

1. 虚拟机软件的介绍 它是能够虚拟出来计算机的一个软件。 常用虚拟机软件: VmwareVirtualBox 说明: 只有安装了虚拟机软件才可以创建虚拟机&#xff0c;当然通过虚拟机软件还可以创建多个虚拟机。 2. 虚拟机的介绍 就是模拟一个真实的计算机&#xff0c;好比一个虚拟的…

DRBD分布式存储实验

DRBD DRBD的全称为&#xff1a;Distributed Replicated Block Device (DRBD) 分布式块设备复制 与心跳连接结合使用&#xff0c;构建高可用性(HA)的集群。 实现方式是通过网络来镜像(mirror)整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。DRBD负责接收数据…

Spring Boot学习随笔- 集成JSP模板(配置视图解析器)、整合Mybatis(@MapperScan注解的使用)

学习视频&#xff1a;【编程不良人】2021年SpringBoot最新最全教程 第五章、JSP模板集成 5.1 引入JSP依赖 <!--引入jsp解析依赖--> <!--C标签库--> <dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version&…

Python 进阶(十五):Base64 编码和解码(base64 模块)

大家好&#xff0c;我是水滴~~ 本篇文章主要介绍Python的base64模块&#xff0c;主要内容有&#xff1a;Base64的概念、base64模块、base64编码和解码、以及其使用场景。文章中包含大量的示例代码&#xff0c;希望能够帮助新手同学快速入门。 《Python入门核心技术》专栏总目录…

Dockerfile创建镜像INMP+wordpress

Dockerfile创建镜像INMPwordpress 需要哪些呢&#xff1a; Nginx 172.111.0.10 docker-nginx Mysql 172.111.0.20 docker-mysql PHP 172.111.0.30 docker-PHP 开始实验&#xff1a; 创建各级目录&#xff0c;他们各自的包和配置文件必须要在同一目录下才可以生效&…

分布式环境认证和授权-基于springboot+JWT+拦截器实现-实操+源码下载

1、功能概述&#xff1f; 1、当用户登录的时候&#xff0c;将用户的信息通过JWT进行加密和签名&#xff0c;并将JWT产生了token信息保存到当前浏览器的localStoragee中,即本地存储中。 2、当用户登录成功后&#xff0c;访问其他资源的时候&#xff0c;程序从localStorage中获…

hive自定义函数及案例

一.自定义函数 1.Hive自带了一些函数&#xff0c;比如&#xff1a;max/min等&#xff0c;但是数量有限&#xff0c;自己可以通过自定义UDF来方便的扩展。 2.当Hive提供的内置函数无法满足你的业务处理需要时&#xff0c;此时就可以考虑使用用户自定义函数。 3.根据用户自定义…

Axure元件的介绍使用以及登录界面和个人简历的绘制

目录 一、Axure元件介绍 1.1 简介 1.2 特点 1.3 元件操作 二、基本元件的使用 2.1 矩形和圆形 2.2 图片 2.2.1 图片元件特点 2.2.2 具体操作 2.3 占位符 2.3.1 使用规范方法举例 2.4 文本元件 2.4.1 图示 2.5 热区 2.5.1 图示 2.5.2 热区辅助页面排版 2.6 线段…

鸿蒙开发 - ohpm安装第三方库

前端开发难免使用第三方库&#xff0c;鸿蒙亦是如此&#xff0c;在使用 DevEco Studio 开发工具时&#xff0c;如何引入第三方库呢&#xff1f;操作步骤如下&#xff0c;假设你使用的是MacOS&#xff0c;假设你已经创建了了一个项目&#xff1a; 一、配置 HTTP Proxy 在打开了…

「PPT 下载」Google DevFest Keynote | 复杂的海外网络环境下,如何提升连接质量

&#xff08;全网都在找的《社交泛娱乐出海作战地图》&#xff0c;点击获取&#x1f446;&#xff09; 12 月 10 日&#xff0c;“Google DevFest 2023 上海站”大会如期在上海市东方万国宴会中心举办。延续过往的技术交流碰撞、前沿技术学习基调传统&#xff0c;本届大会聚焦行…

从手工测试进阶中高级测试?如何突破职业瓶颈...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、手工测试如何进…
最新文章