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

news/2024/4/28 18:41:51/文章来源:https://blog.csdn.net/qq_56077562/article/details/134956893

前言

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

贪心算法理论基础

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

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.luyixian.cn/news_show_191194.aspx

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

相关文章

某音上很火的圣诞树分享

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 效果截图&#xff08;这里不给动态了&#xff0c;某音到处都是了&#xff09;&#xff1a; 源代码&#xff1a; <script src"…

3GPP标准查看、下载和几个UE相关系列标准

由于一直做终端侧协议。最近以UE为核心重新下载了一系列文档。 总结并举例一下分类标准。 如何查看3GPP标准列表 实际上在3GPP网站如下链接&#xff1a;Specifications by Series&#xff0c;每个系列以及分类都说的很清楚。 几个系列分类举例 和终端协议层工作比较关系密切…

【100天精通Python】Day76:Python机器学习-第一个机器学习小项目_鸾尾花分类项目,预测与可视化完整代码(下)

目录 5 模型实现 5.1 分离出评估数据集 5.2 创建不同的模型来预测新数据 5.3 采用10折交叉验证来评估算法模型 5.4 生成最优模型 6 实施预测 7 模型评估 8 完整代码 &#xff08;1&#xff09;鸾尾花分类的完整代码 &#xff08;2&#xff09;可视化不同模型预测的评…

文献计量学方法与应用、主题确定、检索与数据采集、VOSviewer可视化绘图、Citespace可视化绘图、R语言文献计量学绘图分析

目录 一、文献计量学方法与应用简介 二、主题确定、检索与数据采集 三、VOSviewer可视化绘图 四、Citespace可视化绘图 五、R语言文献计量学绘图分析 六、论文写作 七、论文投稿 更多应用 文献计量学是指用数学和统计学的方法&#xff0c;定量地分析一切知识载体的交叉…

vue3移动端脚手架(纯净,集成丰富)

概述 一个纯净的移动端框架 &#xff0c;用到了 Vue3 vuex Vite3 Vant3 sass eslint stylelint htmlhint husky commitlint axios axios-adapter VConsole 自定义全局 loading &#xff0c;自定义函数式 dialog &#xff08;api模仿微信小程序&#xff09;&#x…

小程序定制开发收费价目表

小程序定制开发是一种根据客户的需求和业务场景&#xff0c;为其量身打造专属的小程序的服务。小程序定制开发的收费价目表一般包括以下几个方面&#xff1a; 开发周期&#xff1a;开发周期是指从需求分析到上线测试的整个过程所需的时间。开发周期的长短会影响开发成本和项目…

SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案

Maven项目的Jar包打包问题-没有主清单属性&&ClassNotFoundException 与 NoClassDefFoundError 文章目录 Maven项目的Jar包打包问题-没有主清单属性&&ClassNotFoundException 与 NoClassDefFoundError1、问题出现1.1、Jar包运行&#xff1a;没有主清单属性解决方…

ubuntu18.04配置cuda+cudnn+tensorrt+anconda+pytorch-gpu+pycharm

一、显卡驱动安装 执行nvidia-smi查看安装情况 二、cuda安装 cuda官网下载cuda_11.6.2_510.47.03_linux.run&#xff0c;安装执行 sudo sh cuda_11.6.2_510.47.03_linux.run提升安装项&#xff0c;驱动不用安装&#xff0c;即第一项&#xff08;Driver&#xff09;&#xff…

Vue3拖拽功能【VueDraggablePlus】

一、介绍 由于 Sortablejs 的 vue3 组件一直没有更新&#xff0c;已经跟 vue3 严重脱节&#xff0c;所以诞生了这个项目&#xff0c;这个组件是基于 Sortablejs 的&#xff0c;所以如果你想了解更多关于 Sortablejs 的信息&#xff0c;可以查看Sortablejs 官网。VueDraggableP…

ES6原生音乐播放器(有接口)

视频展示 ES6音乐播放器 项目介绍 GutHub地址&#xff1a;GitHub - baozixiangqianchong/ES6_MusicPlayer: 音乐播放器 ES6_MusicPlayer 是基于JavaScriptES6Ajax等通过原生构建的项目。能够充分锻炼JS能力。 本项目有主页、详情页、歌单页面三部分组成 ├── assets&…

Vue3 使用图片涂鸦插件

一、安装插件 npm i toast-ui/vue-image-editor npm i tui-code-snippet npm i tui-image-editor Image-editor | TOAST UI :: Make Your Web Delicious! 官网介绍说是“凭借简单和美观的完美结合&#xff0c;图像编辑器是一个功能齐全的编辑器&#xff0c;非常适合日常使…

第五章---创建个人中心页面(下)

1. 整体框架 2. 前端页面布局 使用 bootstrap 的 grids system 进行布局。页面规划如下&#xff1a; 在 bootstrap 的网址搜索 grids system。 一行分为12份&#xff0c;左边3份&#xff0c;为头像&#xff1b;右边9份&#xff0c;白色区域 cards&#xff0c;加上按钮创建 bo…

【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II

目录 问题描述 解题过程 官方题解 问题描述 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 N…

【Matlab算法】多维函数求解的基本概念

多维函数求解的基本概念 多维函数最优化问题最优化算法最优化问题的类型最优化算法的分类常用的多维函数求解方法结语 多维函数 多维函数是指定义在 R n \mathbb{R}^n Rn 上的函数&#xff0c;其中 n n n 是函数的维数。例如&#xff0c; f ( x , y ) x 2 y 2 f(x, y) x^…

令牌桶算法理解学习(限流算法)

令牌桶算法是网络流量整形&#xff08;Traffic Shaping&#xff09;和速率限制&#xff08;Rate Limiting&#xff09;中最常使用的一种算法。典型情况下&#xff0c;令牌桶算法用来控制发送到网络上的数据的数目&#xff0c;并允许突发数据的发送。 用简单的话语来说就是限制…

react.js源码二

三、调度Scheduler scheduling(调度)是fiber reconciliation的一个过程&#xff0c;主要决定应该在何时做什么?在stack reconciler中&#xff0c;reconciliation是“一气呵成”&#xff0c;对于函数来说&#xff0c;这没什么问题&#xff0c;因为我们只想要函数的运行结果&…

读书笔记-《数据结构与算法》-摘要4[插入排序]

插入排序 核心&#xff1a;通过构建有序序列&#xff0c;对于未排序序列&#xff0c;在已排序序列中从后向前扫描(对于单向链表则只能从前往后遍历)&#xff0c;找到相应位置并插入。实现上通常使用in-place排序(需用到O(1)的额外空间) 从第一个元素开始&#xff0c;该元素可…

Http请求(bug)——路径变量传参遇到特殊符号的问题 URL中的#,?,符号作用

前言 本篇博客分析路径变量传参遇到特殊符号的问题&#xff0c;阐述了URL中的#&#xff0c;&#xff1f;&#xff0c;&符号作用。 目录 前言引出路径变量传参遇到特殊符号的问题问题描述问题分析 URL中的 #&#xff0c;&#xff1f;&#xff0c;&符号的作用URL中# 的作…

sqlite3.44.2的编译

文章目录 sqlite3.44.2的编译概述笔记解决shell.c编译报错的方法整理 - 正常可用的编译脚本过程剩下的事情验证编译出的输出是否可以给工程正常使用?END sqlite3.44.2的编译 概述 想从源码编译一份Sqlite3.44.2出来. 编译sqlite3.44.2前置需要的TCL环境已经编译出来到了, 做…

前端入门:HTML初级指南,网页的简单实现!

代码部分&#xff1a; <!DOCTYPE html> <!-- 上方为DOCTYPE声明&#xff0c;指定文档类型为HTML --> <html lang"en"> <!-- html标签为整个页面的根元素 --> <head> <!-- title标签用于定义文档标题 --> <title>初始HT…