代码随想录第二十七天(一刷C语言)|分发饼干摆动序列最大子数组和

创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。

一、分发饼干

思路:参考carl文档

         局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。尝试使用贪心策略,先将饼干数组和小孩数组排序。再从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。

ledcode题目:https://leetcode.cn/problems/assign-cookies/description/

AC代码:

//小餅乾先餵飽小胃口的
int cmp(int* a, int* b) {
    return *a - *b;
}

int findContentChildren(int* g, int gSize, int* s, int sSize){
    if(sSize == 0)
        return 0;

    //将两个数组排序为升序
    qsort(g, gSize, sizeof(int), cmp);
    qsort(s, sSize, sizeof(int), cmp);

    int numFedChildren = 0;
    int i = 0;
    for(i = 0; i < sSize; ++i) {
        if(numFedChildren < gSize && g[numFedChildren] <= s[i])
            numFedChildren++;
    }
    return numFedChildren;
}

二、摆动序列

思路:参考carl文档

        局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),那么这个坡度就可以有两个局部峰值。整体最优:整个序列有最多的局部峰值,从而达到最长摆动序列。贪心所贪的地方是让峰值尽可能的保持峰值

注意:上下坡中有平坡、数组首尾两端、单调坡中有平坡

lecode题目:https://leetcode.cn/problems/wiggle-subsequence/

AC代码:

int wiggleMaxLength(int* nums, int numsSize){
    if(numsSize <= 1)
        return numsSize;

    int length = 1;
    int preDiff , curDiff;
    preDiff = curDiff = 0;
    for(int i = 0; i < numsSize - 1; ++i) {
        // 计算当前i元素与i+1元素差值
        curDiff = nums[i+1] - nums[i];

        // 若preDiff与curDiff符号不符,则子序列长度+1。更新preDiff的符号
        // 若preDiff与curDiff符号一致,当前i元素为连续升序/连续降序子序列的中间元素。不被记录入长度
        // 注:当preDiff为0时,curDiff为正或为负都属于符号不同
        if((curDiff > 0 && preDiff <= 0) || (preDiff >= 0 && curDiff < 0)) {
            preDiff = curDiff;
            length++;
        }
    }

    return length;
}

三、最大子数组和

思路:参考carl文档

        局部最优:当前连续和为负数时舍弃,从下一个元素重新计算连续和,负数会使连续和变小。全局最优:选取最大连续和。遍历 nums,从头开始用 count 累积,如果 count 一旦加上 nums[i]变为负数,那么就从 nums[i+1]开始从 0 累积 count 了。既不断调整最大子序和区间的起始位置。区间的终止位置,其实就是 count 取到最大值。

ledcode题目:https://leetcode.cn/problems/maximum-subarray/description/

AC代码:

int maxSubArray(int* nums, int numsSize){
    int maxVal = INT_MIN;
    int subArrSum = 0;

    int i;
    for(i = 0; i < numsSize; ++i) {
        subArrSum += nums[i];
        // 若当前局部和大于之前的最大结果,对结果进行更新
        maxVal = subArrSum > maxVal ? subArrSum : maxVal;
        // 若当前局部和为负,对结果无益。则从nums[i+1]开始应重新计算。
        subArrSum = subArrSum < 0 ? 0 : subArrSum;
    }

    return maxVal;
}

全篇后记:

        开启最新篇章贪心算法章节的学习,感觉上来说还是很好,坚持去做吧记录的习惯似乎在逐渐养成。

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

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

相关文章

FastAPI之声明请求参数示例数据

在Pydantic模型中添加额外的JSON模式数据 您可以声明Pydantic模型的示例&#xff0c;这些示例将被添加到生成的JSON模式中。 示例代码 from fastapi import FastAPI from pydantic import BaseModelapp FastAPI()class Item(BaseModel):name: strdescription: str | None …

设计模式——单例模式(Singleton Pattern)

概述 单例模式确保一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供整个实例&#xff0c;这个类称为单例类&#xff0c;它提供全局访问的方法。单例模式是一种对象创建型模式。单例模式有三个要点&#xff1a;一是某个类只能有一个实例&#xff1b;二是它必须自行…

WebStorm:Mac/Win上强大的JavaScript开发工具

WebStorm是JetBrains公司开发的针对Mac和Windows系统的JavaScript开发工具。它为开发者提供了一站式的代码编辑、调试、测试和版本控制等功能&#xff0c;帮助你更高效地进行Web开发。新版本的WebStorm 2023在性能和用户体验方面都做出了重大改进&#xff0c;让你的JavaScript开…

冰箱镜头除雾解决方案

冰箱镜头除雾解决方案 1.0 雾气产生原因 由于温度和湿度的变化,导致空气中的水汽凝结在镜头上,形成一层细小的水滴,从而影响了镜头的透光性和清晰度。 这种情况跟汽车玻璃、眼镜等物体表面起雾的原理是一样的, 雾的形成条件 (1)湿度–充足的水汽:①水汽输送(向岸风…

【RHCE】openlab搭建web网站

网站需求&#xff1a; 1、基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 增加映射 [rootlocalhost ~]# vim /etc/hosts 创建网页 [rootlocalhost ~]# mkdir -p /www/openlab [rootlocalhost ~]# echo welcome to openlab > /www/openlab/index.h…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-2 特征值与特征向量

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-2 特征值与特征向量 1. 定义1.1 线性变换1.2 求解特征值&#xff0c;特征向量1.3 应用&#xff1a;对角化矩阵——解耦Decouple 2. Summary 1. 定义 A v ⃗ λ v ⃗ A\vec{v}\lambd…

广播和组播

1. 广播 1.1 知识点 INADDR_ANY代表本机所有地址 常用方法当你将套接字绑定到INADDR_ANY&#xff0c;它会监听所有可用的网络接口&#xff0c;这意味着它将接受来自所有本地IP地址的传入连接或数据包 1.1.1 广播的流程 广播发送端&#xff1a; ----> 添加广播属性 1、建立套…

无需繁琐编程 开启高效数据分析之旅!

不学编程做R统计分析&#xff1a;图形界面R Commander官方手册 R Commander是 R 的图形用户界面&#xff0c;不需要键入命令就可通过熟悉的菜单和对话框来访问 R 统计软件。 R 和 R Commander 均可免费安装于所有常见的操作系统——Windows、Mac OS X 和 Linux/UNIX。 本书作…

DataGrip常见问题

查询语句结果没有输出在output中 进行如下配置 配置后查询结果输出在output中 左侧数据库链接信息导航栏被隐藏 以上导航栏被隐藏&#xff0c;按下图操作调出

自定义TypeHandler 将mysql返回的逗号分隔的String转换到List

sql执行如下&#xff1a; 这里我定义的接受类&#xff1a; 但是这里报了错JSON parse error: Cannot deserialize value of type java.util.ArrayList<java.lang.String>from Object value (token JsonToken.START_OBJECT); nested exception is com.fasterxml.jackson…

第六届“强网”拟态防御国际精英挑战赛 持续引领技术发展新潮流

12月6日&#xff0c;第六届“强网”拟态防御国际精英挑战赛在南京紫金山实验室盛大开幕&#xff0c;来自全球的40支顶尖战队开启了连续72小时的高强度对决。 本届挑战赛由江苏省委网信办指导&#xff0c;南京市委网信办、紫金山实验室、中国通信学会主办&#xff0c;是第三届网…

高精度加法,减法,乘法,除法(下)(C语言)

前言 上一篇博客我们分享了高精度加法&#xff0c;减法,这一期我将为大家讲解高精度乘法和高精度除法。那让我们开始吧&#xff01; 对加法和减法感兴趣的话就点我 文章目录 1&#xff0c;乘法2&#xff0c;除法3&#xff0c;尾声 1&#xff0c;乘法 让我们想想我们平时做数学…

使用高防IP防护有哪些优势

高防IP是针对互联网服务器在遭受大流量的DDoS攻击后导致服务不可用的情况下&#xff0c;推出的付费增值服务&#xff0c;用户可以通过配置高防IP&#xff0c;将攻击流量引流到高防IP&#xff0c;确保源站的稳定可靠。高防IP相当于搭建完转发的服务器。 高防IP有两种接入方式&a…

vue如何解决el-select下拉框显示ID不显示label问题

<template><el-select v-model"searchObj.saleAreaId" change"searchClick" placeholder"请选择" class"inpt1" clearablesize"small"><el-option v-for"item in saleAreaList" :key"item.id…

机器学习实战:预测波士顿房价

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来学习一下机器学习中一个非常经典的案例&#xff1a;预测波士顿房价&#xff0c;在此过程中也会补充很多重要的知识点&#xff0c;欢迎大家一起前来探讨学习~ 一、导入数据 在这个项目中&#xff0c;我们利用马萨诸…

uView的使用

下载好uView后&#xff0c;我们可以快速的去使用 JS中工具库的使用 例如&#xff1a;time 时间格式 | uView - 多平台快速开发的UI框架 - uni-app UI框架 我们可以快速的使用内置函数&#xff0c;例如以下时间戳&#xff1a; http请求 但是我们需要注意的是&#xff0c;需要…

Linux下的同步命令代码编写

1.设置静态IP vi /etc/syscnfig/network-scripts/ifcfg-eth1 2.设置主机名 hostnamectl --static set-hostname 主机名 如&#xff1a;hostnamectl --static set-hostname hadoop001 3.配置IP与主机名映射 vi /etc/hosts 4.关闭防火墙 systemctl stop firewalld systemctl…

Nucleo-F103RB-简介

Nucleo-F103RB-简介 1. 前言2. 概述3. 微控制器特性4. Nucleo 功能5. 电路板引脚排列6. 支持的测试板矩阵7. ST MCU板8. ST 扩展板1. 前言 经济实惠且灵活的平台,可简化使用STM32F103RBT6微控制器的原型设计。 2. 概述 STM32 Nucleo开发板为用户提供了一种经济实惠且灵活的…

创新驱动发展丨暴雨信息受邀参加广东省公路工程学术交流会

为加强公路交通工程领域技术交流&#xff0c;结合公路交通工程技术发展和行业热点问题&#xff0c;广东省公路学会联合中国公路学会交通工程与信息化分会举办公路工程学术交流会。学术交流会以“交通工程智能化新技术应用及高速公路改扩建机电工程经验交流”为主题&#xff0c;…

【开源】基于Vue+SpringBoot的河南软件客服系统

文末获取源码&#xff0c;项目编号&#xff1a; S 067 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S067。} 文末获取源码&#xff0c;项目编号&#xff1a;S067。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、…