代码随想录 day31|day32

news2025/2/27 4:31:54

分发饼干
题意:
对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。
思路:
1.先排序; 然后对每个小孩尝试找到让饼干满足的尺寸。
2.一个while循环是针对某个小孩找到第一个能满足要求的饼干。

        for(int i = 0  , j = 0; i < g.size() && j < s.size() ; ++ i)
        {
         
           while( j< s.size() && s[j] - g[i] < 0 )
            {
                 
                 j++ ;    
            } // 找到第一个能达到要求的饼干。 
            // 如果饼干能满足要求那么就j++ ; 并且被满足的小孩总数目加加。  
            if(j < s.size() && s[j] - g[i] >= 0)
            {
                manum++ ; 
                j++ ; 

摆动序列
题意是找到最长摆动子序列的长度。
画图
在这里插入图片描述

贪心策略:找到局部最优:curdif 和 predif 的规定。 删除单一坡度上的节点这样就只剩下摆动序列,之后找到全局最优。 全局最优是删除全部的单调坡度。

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; // 只有在有摆动时,才将predif = curdif 
            }
         
        }
        return result;
    }
};

最大子序和
题意:
是找出一个具有最大和的连续子数组。
思路:
局部贪心:每次认为本次寻找的是最大的和。但是如果求得的和小于0;那么就重置为0(证明本次没有找到最大和), 又重新更新最大值。 这就造成了全局贪心:找到全局的最大和。
代码

int maxSubArray(vector<int>& nums) 
    {
        int res =0  , maxres = INT_MIN ; 
        if(nums.size() == 1)
        {
            return nums[0] ; 
        }
        for(int i = 0  ;i< nums.size() ; ++ i)
        {
            res += nums[i] ;         
            if(maxres < res) // 找到最大值。 
            {
                maxres = res ; 
            }
            if(res <= 0) // 证明本次没找到最大值。
            { 
                res = 0  ; 
            }
        }

        return maxres ; 
    }

买卖股票的最佳时机 II
题意:给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。
思路:
局部:对每个上升期的股票取得最大利润。
全局:达到最佳最大利润。
具体:如果prices[i-1] > prices[i] 就表示 此时是收割i-1到之前的利润的时候,本次的最大利润就是这个值。 最终得到最大利润。
但是卡哥的更简洁
所以这里列出卡哥的思路:
最终的利润可以分解成每天的利润 ; 如果这天的利润为正加入结果集。

int maxProfit(vector<int>& prices) {
        int result = 0;
        for (int i = 1; i < prices.size(); i++) {
            result += max(prices[i] - prices[i - 1], 0);
        }
        return result;
    }


跳跃游戏
题意:给定一个非负整数nums ; 最初位于数组的第一个下标。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。
思路:这个题需要绕一下;从跳跃,转换(映射)到求覆盖范围。
能否到达最后一个下标。并非是求最大的跳跃值。而是求能跳的最大的范围。 这个需要绕一下。
局部:每个元素的跳跃范围 i + nums[i] ; 在这个范围内找到下一次跳跃的最大范围。
之后全局最优。看最大范围是否到最尾元素。

int net =0 , cur = 0 ;  
for(int i = 0 ; i < nums.szie() ; ++ i)
{
net =  max(nums[i] +i , net) ; 
	if(cur>=nums.size() -1 )
	{
	return true; 
	}
	if(i == cur)
	{
		cur = net ; 
				
	}
}

跳跃游戏 II
题意:找到能够跳跃到最后元素的最少次数。
思路:依然是找到能够跳到的最大的范围;
局部最优和全局最优依然是上一题:
每次在该范围内找到下一次的最大的范围。
在每次跳的时候也是改变范围的时候(这也是绕的一点)

 int times  = 0,  cur = 0 , net = 0  ;  
        for(int i = 0 ; i< nums.size() ; ++ i)
        {
            if(cur >= nums.size()-1)
            {
                break ; 
            }
            net = max(nums[i] + i , net); // 计算下一次要遍历的范围的末尾此处是贪心思想的体现。
            if(cur == i && cur != nums.size()-1 ) // 如果cur 为 i 时 
            {
                cur  =  net ; 
                times ++ ; 
            }
        }
        return times ; // 进行返回 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OJ刷题——2086.AI=?、2087.剪花布条、KPM算法

2086.AI&#xff1f; 题目描述 Problem - 2086 运行代码 #include <iostream> #include <cstdio> using namespace std; const int N 3005; int main() {int n;double Ao, An;double num[N];while (cin>>n) {cin >> Ao>>An;for (int i 1; i…

cve_2014_3120-Elasticsearch-rce-vulfocus靶场

1.背景 来源&#xff1a;ElasticSearch&#xff08;CVE-2014-3120&#xff09;命令执行漏洞复现_mvel 漏洞-CSDN博客 参考&#xff1a;https://www.cnblogs.com/huangxiaosan/p/14398307.html 老版本ElasticSearch支持传入动态脚本&#xff08;MVEL&#xff09;来执行一些复…

STM32智能家居项目esp8266上云OneNet【附源码+详细教程】

目录 一、硬件选材 二、OneNet使用教程 三、代码修改教程 四、添加数据流方法 五、项目工程&#xff08;源码元件清单教程&#xff09; 小白也能做&#xff0c;项目工程在后文可下载。 一、硬件选材 二、OneNet使用教程 拿到代码后肯定是连不上网的&#xff0c;因为源码…

pytest配置文件配置并通过allure生成报告

之前已经学习了使用pytestrequests实现各种方式的调用和一些脚本的执行&#xff0c;今天来学习下如何使用pytest.ini配置文件来管理用例的执行以及如何使用allure生成测试报告。 1.pytest.ini文件配置 在项目目录下新建pytest.ini文件&#xff0c;然后进行配置&#xff0c;pyt…

linux:centos7升级libstdc++版本到3.4.26

下载&#xff0c;解压 wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip unzip libstdc.so_.6.0.26.zip 复制到【/usr/lib64】&#xff1a; cp libstdc.so.6.0.26 /usr/lib64创建软链接 cd /usr/lib64 sln libstdc.so.6.0.26 libstdc.so.6查看一…

使用 Scapy 库编写 TCP ACK 洪水攻击脚本

一、介绍 TCP ACK洪水攻击是一种分布式拒绝服务攻击&#xff08;DDoS&#xff09;&#xff0c;攻击者通过向目标服务器发送大量伪造的TCP ACK&#xff08;确认&#xff09;数据包&#xff0c;使目标服务器不堪重负&#xff0c;无法正常处理合法请求。虽然ACK包通常用于确认接收…

问题:材料题请点击右侧查看材料问题 查看材料 #学习方法#经验分享#学习方法

问题&#xff1a;材料题请点击右侧查看材料问题 查看材料 A.Colleges may reduce their enrollment. B.Top universities become increasingly competitive. C.Universities become selective in student admission. D.Colleges invest less in academy and infrastructure…

【LLM】Dify 0.6.10 在Windows系统上本地化部署

【LLM】Dify 0.6.10 在Windows系统上本地化部署 文章目录 【LLM】Dify 0.6.10 在Windows系统上本地化部署一、参考资料二、Dify 概述1、Dify开源项目功能介绍&#xff08;RAG流水线&#xff0c;Agent工具接入&#xff0c;Prompt配置和工作流编排&#xff0c;大模型接入&#xf…

浅析嵌入式实时系统中信号量的概念

目录 概述 1. 认识信号量 1.1 定义信号量 1.2 信号量的类型 1.2.1 二值信号量 1.2.2 计数信号量 1.2.3 互斥信号量 1.2.3.1 认识互斥信号量 1.2.3.2 互斥信号量的其他特性 2 典型信号量的使用 2.1 等待和信号同步 2.2 多任务等待和信号同步 2.3 信用跟踪同步 2.…

stm32MP135裸机编程:使用USB/UART烧录程序到SD卡并从SD卡启动点亮一颗LED灯

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf STM32CubeProgrammer v2.16.0 烧录需要的二进制文件1 烧录到SD卡需要哪些文件 参考《轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序》&#xff0c;烧录需要的SD卡文件如下&#xff1a; &a…

多模态大模型思路

最近看了一篇苏神的文章&#xff0c;对多模态LLM的设计思考很有启发&#xff0c;总结如下&#xff0c;原文可参考“闭门造车”之多模态模型方案浅谈 - 科学空间|Scientific Spaces 多模态模型要解决什么问题 视频生成、文生图这些内容&#xff0c;图文混合的双模态输入输出&a…

CTF-PWN-kernel-UAF

文章目录 参考slub 分配器kmem_cache_cpukmem_cache_node[ ]冻结和解冻分配释放 fork绑核Kmalloc flag和slub隔离CISCN - 2017 - babydriver检查babtdriver_initstruct cdevalloc_chrdev_regioncdev_initownercdev_add_class_createdevice_create babyopenbabyreleasebabyreadb…

机器视觉系统-同轴光源大小选择技巧

同轴光源多用于检测光滑平面产品上的缺陷&#xff0c;同样利用上述的方法计算得出光源尺寸。 实际上&#xff0c;同轴光源可理解为没有孔的开孔面光&#xff0c;因此可等效为发光面相等的面光源&#xff0c;如下图&#xff1a; 如图所示&#xff0c;同轴光源的效果与开孔面光的…

LeetCode 算法:缺失的第一个正数c++

原题链接&#x1f517;&#xff1a;缺失的第一个正数 难度&#xff1a;困难⭐️⭐️⭐️ 题目 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输…

Gradio.NET 的简单入门使用

1、最近在网络上由发现了一个好完的东西。 2、Gradio.NET通过简单的C# Web API几行代码就可以实现一网页界面。 3、Python中也有一个Gradio&#xff0c;功能好像都差不多哦&#xff0c;不废话了&#xff0c;我们来开始实操。 4、在Visual Studio 2022 中创建一个 ASP.NET Cro…

Seq2seq、编码器解码器神经网络

目录 一、Seq2seq 简介二、编码器三、解码器四、编码器-解码器的训练 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 需掌握的前提知识&#xff1a; LSTM、词嵌入 本文参考&#xff1a;【官方双语】编码、解码神经网…

《软件定义安全》之五:软件定义的安全架构

第5章 软件定义的安全架构 1.软件定义安全架构 安全控制平台&#xff0c;主要负责安全设备的资源池化管理、各类安全信息源的收集和分析、与客户业务系统对接&#xff0c;以及相应安全应用的策略解析和执行。 安全应用是根据特定的安全需求所开发的程序&#xff0c;它利用安全…

Mysql的InnoDB介绍

目录 show engines查看搜索殷勤&#xff0c;默认InnoDB。 Mysql为什么使用InnoDB作为默认存储引擎 InnoDB主要包括内存结构和磁盘结构 内存结构包含: 磁盘结构中包括: 为什么设计成内存结构和磁盘结构两部分 使用InnoDB存储引擎创建的表&#xff0c;对应的数据文件在哪里…

堆排序经典问题【TopK】

前言 在上文我们讲了堆排序的实现&#xff08;点此调整&#xff09;&#xff0c;我们先简单回顾一下。 在进行堆排序之前&#xff0c;需要建一个堆&#xff0c;由于排序是将堆顶数据与堆底交换&#xff0c;所以排升序建大堆&#xff0c;降序建小堆。 堆排序的代码 //向下调整…

Nginx+Tomcat负载均衡、动静分离群集方案

一、Tomcat简介 在现代 Web 服务架构中&#xff0c;Tomcat 和 Nginx 是两个至关重要的组件&#xff0c;负责处理用户请求并实现高性能的服务。本篇博客将深入探讨这些技术的原理和部署配置方法。 最初是由Sun的软件构架师詹姆斯邓肯戴维森开发。安装Tomcat后&#xff0c;安装…