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

Leetcode刷题. 贪心算法

贪心算法:

        比较传统的解释:将整个问题拆解为几个小问题,找到小问题的最优解,加起来就是整个问题的全局最优解。对于现在的我理解贪心就是一种感觉,给出证明很难,解题思路一般就是认真读题,发掘题目的条件,然后尝试给出算法。

11. 盛最多水的容器

         一个显而易见的条件:水的面积取决于底边的长度和水池两边的最短边,因此可以首先选择最长的底边,然后在此基础上在选较高的水池的一边,在这个过程中计算面积最大值,保存即可。

class Solution {
public:int maxArea(vector<int>& height) {int maxArea = 0;for (int i = 0, j = height.size() - 1; i < j; ) {if (height[i] <= height[j]) {maxArea = max((j - i) * height[i], maxArea);i++;} else {maxArea = max((j - i) * height[j], maxArea);j--;}}return maxArea;}
};

122. 买卖股票的最佳时机 II

        求解思路:累加每天股票变化的增加的部分,比如1和5是涨的,那么最后的结果肯定是涨的,所以需要把该部分累加。

class Solution {
public:int maxProfit(vector<int>& prices) {int profit = 0;for (int i = 0; i < prices.size(); i++) {for (int j = i + 1; j < prices.size() && prices[j] - prices[i] >= 0; j++, i++) {profit += prices[j] - prices[i];}}return profit;}
};

680. 验证回文串 II

        这道题的思路还是比较直观的,就是双指针判断然后处理删除的情况,关键在于怎么处理删除的情况需要重点理解,这里体现了根据局部解推出全局解的思想。

class Solution {
public:bool validPalindrome(string s) {int left = 0, right = s.size() - 1;while (left < right) {if (s[left] != s[right]) {return isPalindrome(s, left + 1, right) || isPalindrome(s, left, right - 1);}left++;right--;}return true;}bool isPalindrome(const string& s, int left, int right) {while (left < right) {if (s[left] != s[right]) {return false;}left++;right--;}return true; }
};

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

相关文章:

  • 强化学习的数学原理-01基本概念
  • D41【python 接口自动化学习】- python基础之函数
  • 思迅商云8修改最大找零金额
  • Lumerical学习——分析工具(Analysis tools)
  • 思迅商云8会员积分全部清0
  • $nextTick原理
  • python办公:批量PDF合并—通用版
  • 人工智能研究创造出新型蛋白质
  • blender 金币基站 建模 学习笔记
  • eggjs sequelize egg-sequelize-auto自动从零生成一个数据表 自动创建model
  • 解决低版本pytorch和onnx组合时torch.atan2()不被onnx支持的问题
  • javaWeb项目-ssm+jsp房屋出租管理系统功能介绍
  • 【R语言】gadm全球行政区划数据库
  • 3万字66道Java基础面试题总结(2024版本)
  • go 环境安装
  • stereo-seq 细胞、捕获到的分子及其特征的统计描述
  • ceph rook-ceph 部署 cephobjectstore 失败
  • 1791. 找出星型图的中心节点
  • 微调小型Llama 3.2(十亿参数)模型取代GPT-4o
  • 【JavaEE】【IO】文件操作
  • commonjs和esmodule的导入导出细节
  • 【热门】用ChatGPT做智慧农业云平台——农业ERP管控系统
  • Android从上帝视角来看PackageManagerService
  • 阵列式位移计与传统测斜仪相比的优势
  • 第7章 网络请求和状态管理
  • 苍穹外卖学习笔记(二十七)
  • 使用exe4j打包jar包生成exe文件,GUI应用详细使用教程
  • go jwt 用户登录和返回用户信息 token ----important!!!
  • OpenCV高级图形用户界面(12)用于更改指定窗口的大小函数resizeWindow()的使用
  • babylonjs shader学习之copy shadertoy案例