当前位置: 首页 > news >正文

贪心算法 part01

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;}
};

455.分发饼干

sort(begin(),end())

然后匹配就行;(但是代码随想录想的是用大的满足,颠倒一下饼干和投喂小孩遍历顺序就行)

376. 摆动序列

我理解了,就算是递增序列也算2!!(题目理解存在问题!!)

class Solution { 
public:int wiggleMaxLength(vector<int>& nums) {if(nums.size() < 2) return nums.size(); // 处理边界情况int count = 0;  // 初始化int flag = 0;   // 初始状态for(int i = 1; i < nums.size(); i++) {int a = nums[i] - nums[i-1]; // 计算当前差值if(a > 0 && flag <= 0) {     // 形成上升摆动count++;flag = 1;               // 更新状态为上升} else if(a < 0 && flag >= 0) { // 形成下降摆动count++;flag = -1;              // 更新状态为下降}// 当 a == 0 时,跳过,保持 flag 不变}return count+1; //我之前是 态势的比较,而元素需要+1; }
};

代码随想录

53. 最大子序和

我这里相当于自动获取了最大数值;

class Solution {
public:int maxSubArray(vector<int>& nums) {int mmax = INT_MIN;int last=0;int sum=0;int flag=0;if(nums.size()==0) return 0;if(nums.size()==1) return nums[0];for(int i=0; i<nums.size();i++){if(nums[i]>mmax) mmax=nums[i]; //全局最大单数last = max(sum,last); sum+=nums[i];last = max(sum,last); //是否更新最大数值if(sum<=0) {flag=1; sum=0;}}if(flag==1&&last<=0) return mmax;else return max(mmax,last);}
};
class Solution {
public:int maxSubArray(vector<int>& nums) {int mmax = nums[0]; // 记录全局最大值int sum = 0;        // 记录当前子数组的和for (int i = 0; i < nums.size(); i++) {sum += nums[i];           // 累加当前元素mmax = max(mmax, sum);    // 更新全局最大值---自动获取了最大数值if (sum < 0) sum = 0;     // 当前和为负时,重置为 0}return mmax; // 返回最大子数组和}
};

http://www.lryc.cn/news/505807.html

相关文章:

  • java开发入门学习二 - 变量
  • Qt Q_ENUM enum 转 QString 枚举字符串互转; C++模板应用
  • 0004.基于springboot+elementui的在线考试系统
  • 基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作
  • 02-5.python入门基础一控制流(while)
  • Go语言开发入门与实战
  • HarmonyOS Next应用开发实战:ArkWeb组件使用介绍及使用举例
  • 【已解决】在Visual Studio里将应用与Microsoft Store关联时提示网络异常
  • springcloud-gateway获取应用响应信息乱码
  • [笔记]关于Qt的nativeEvent事件无法接收window消息的Bug
  • LeetCode 热题 100_K 个一组翻转链表(31_25_困难_C++)(四指针法)
  • Pytorch | 从零构建MobileNet对CIFAR10进行分类
  • CSS系列(18)-- 工程化实践详解
  • 日拱一卒(18)——leetcode学习记录:二叉树中的伪回文路径
  • hive—炸裂函数explode/posexplode
  • SpringBoot 新特性
  • 鸿蒙app封装 axios post请求失败问题
  • 消息队列 Kafka 架构组件及其特性
  • 网络攻击与防范
  • 文献研读|基于像素语义层面图像重建的AI生成图像检测
  • 【操作系统】为什么需要架构裁剪?
  • LSTM长短期记忆网络
  • 基于前端技术UniApp和后端技术Node.js的电影购票系统
  • 数据结构与算法:稀疏数组
  • Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
  • VSCode中的Black Formatter没有生效的解决办法
  • 【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
  • Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
  • 微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决
  • sql中case when若条件重复 执行的顺序