LeetCode之最值问题系列问题求解

2023-11-04

最值系列题目求解

这类型题目的特点就是一个数组,或者字符串, 给的条件是连续或者不连续,或者给定限定条件进行求解的情况

解题的关键

  1. 采用两个变量
    • 一个变量记录前面的条件,或者最后一个不满足题意的index,或者最小值, 比如股票题目当中j ,或者最大不重复字符串
    • 一个变量代表截止到处理到该位置处的最大结果值
  2. 动态规划保存前面的计算结果,全局变量保存计算结果

利益最大买卖股票

只能进行一次买卖的基本情况

class Solution {
   
    public int maxProfit(int[] prices) {
   
        // 动态规划问题
        if(prices==null||prices.length<2)
            return 0;
        int max = 0;
      //  int i = 0;
        int j = prices[0];
        for(int i=1;i<prices.length;i++){
   
            //有一个基准
            // 最小值更新, 记录最小的买入位置
            j = Math.min(j,prices[i]);
         max =Math.max(prices[i]-j,max);
        }
        return max;
    }
}

最长递增子序列

可以间隔处理
Input: [10,9,2,5,3,7,101,18]
Output: 4
Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.

解法一:动态规划

时间复杂度为O(N*N)

class Solution {
   
    public int lengthOfLIS(int[] nums) {
   
       int n = nums.length;
        if(n==0) return 0;
        if(n==1) return 1;
        int max = 1;
        int [] dp =new int[n];
        Arrays.fill(dp,1);
        dp[0] =1;
        for(int i=1;i<n;++i){
   
            for(int j=i-1;j>=0;--j)
            {
   
                if(nums[j]<nums[i])
                {
   
                    //因为要求一个增长序列,u=
                   // 状态转移方程dp[i]在前面选择一个num[j]<nums[i],总多条件中选择一个·满足题意的max 的j,然后加i
                    dp[i] = Math.max(dp[j]+1,dp[i]);
                }
                //如果一个元素找不到一个比他任何一个比他小的元素,那么以这个元素为nums[i] 为尾巴的增长序列只能为1,自己本身
                }
            max = Math.max(max,dp[i]);
        }
        return max;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode之最值问题系列问题求解 的相关文章

  • UART串口Shell软硬件模型分析总结

    文章目录 层次一 最底层逻辑配置交互 如何从Uart硬件读写单个字节数据 层次二 抽象串口软件模块交互 基于串口对接输入输出流 和 Printf适配 层次三 类似Shell封装抽象交互 基于串口交互命令行界面 命令解析 补全 修改 记录 c
  • df -h 详解和centos 磁盘清理 /dev/vda1系统盘满了

    df h 检查一台服务器磁盘使用空间 发现磁盘已经使用了100 思路是 1 cd usr 当然这里不一定是 usr目录 最好是cd到 根目录再执行下一步 2 du sh 看哪个目录占用空间大 3 重复前两步 根据实际情况删除或者移走 4 日
  • QT 之键盘事件( keyPressEvent)

    一 介绍 keyPressEvent是QWidget里面的函数 所以凡是继承自QWidget的类都可以通过实现这个函数来完成对按键事件的响应 要让当前的widget能够响应按键事件 最先需要做的事情是 调用 setFocusPolicy Q

随机推荐

  • Vue3动画路由转场

  • PWA及小程序在系统生态方面的支持对比

    PWA代表 渐进式网络应用 Progressive Web Application 它是一种结合了网页和移动应用程序功能的技术概念 PWA旨在提供类似于原生应用程序的用户体验 包括离线访问 推送通知 后台同步等功能 同时又具有网页的优势 如
  • JS new操作符具体做了什么?

    1 意义 在JavaScript中 new 操作符用于创建一个新的对象实例 具体来说 new 操作符会执行以下步骤 JavaScript中的new操作符是一个非常重要的操作符 它用于创建一个新的对象实例 2 实例化步骤 创建一个新的空对象
  • ctfweb入门(13-14)

    ctf show web13 进入题目是个文件上传的题目 尝试了一番文件上传漏洞利用的方法后 没有啥突破 可能有啥隐藏的目录 尝试源码泄露利用的方法 在输入upload php bak时成功下载下来源码 bak文件是备份文件 这里列举一下常
  • 华为机试HJ15 求int型正整数在内存中存储时1的个数

    HJ15 求int型正整数在内存中存储时1的个数 Python 题目 解题思路 代码 结果 代码优化 题目 解题思路 1 输入转整数 用Python的bin方法转为二进制 再按字符串逐个检查等于1 的个数 优化 代码 res 0 for c
  • Ubuntu各个版本下载和安装

    一 下载方式 推荐使用网易镜像站下载 官网下载速度太慢 在官网下载ubuntu 网址 https ubuntu com download desktop 在网易镜像站下载ubuntu 网址 http mirrors 163 com ubun
  • lambda表达式提示变量错误:Variable used in lambda expression should be final or effectively final

    今天在使用lambda表达式时 遇到一个问题 Variable used in lambda expression should be final or effectively final 代码如下 ClassName CyclicBarr
  • 关于Sensor和ISP,对输出图像做Crop和Downscale的注意事项

    01 背景 客户要求调试ov的一款分辨率为4608x2592的Sensor 但目前我司的Soc最大支持分辨率是4096x3456 所以目前能出的最大分辨率为4096x2592 11M 客户要求ISP要出两路视频流 11M 1080P 且不能
  • WPF Windows 设置无边框还能拖动,缩放

    1 窗体的介绍 标准窗口由两个重叠矩形组成 外部矩形是非工作区 通常称为chrome 它由操作系统的窗口管理器进行绘制和管理 窗口的非工作区是通过 WPF 实现的 其中包括大多数窗口所共有的窗口部分 包括以下各项 边框 标题栏 图标 最小化
  • Oracle PGA

    PGA ProgramGlobal Area 程序全局区 PGA是用户进程连接到数据库并创建一个对应的会话时 由ORACLE为服务器进程分配的专门用于当前用户会话的内存区 每个Oracle服务器进程都包含有属于自己的PGA 它只存储这个服务
  • 小程序中实现VR效果

    小程序中实现VR效果 最近的工作中有一个奇葩的需求 就是更根据房间场景图 打开摄像机或者上传图片来适配不同的背景图 类似于VR的效果 一开始百度搜索 发现小程序根本没有VR的插件 而小程序要实现VR需要使用web view 也就是使用网页的
  • Livox 设备时间同步

    Livox wiki时间同步教程 下面是PTP时间同步的方法 是相对容易的一种 笔记本因为有线网卡的问题大概率没法完成 最好选台式机 首先ifconfig确认一下网卡情况 通过下面的指令来检查网卡是否支持软件 硬件时间戳功能 本机有线网卡
  • ESP32-CAM监控摄像头

    在此项目中 我们将使用ESP32 CAM开发板构建IP监控摄像头 ESP32相机将托管一个视频流Web服务器 您可以使用网络中的任何设备对其进行访问 您可以将此视频流Web服务器与流行的家庭自动化平台 如Home Assistant或Nod
  • C++实现——卡特兰数列及其应用

    卡特兰数列的原理及其应用场景 令h 1 1 catalan数满足递归式 h n h 1 h n 1 h 2 h n 2 h n 1 h 1 其中n gt 2 该递推关系的解为 h n c 2n 2 n 1 n n 1 2 3 1 1 2 5
  • 什么是Java中的公平锁?

    一直想分析下公平锁和非公平锁在Java中的实现 公平锁 Fair 加锁前检查是否有排队等待的线程 优先排队等待的线程 先来先得非公平锁 Nonfair 加锁时不考虑排队等待问题 直接尝试获取锁 获取不到自动到队尾等待 首先Java中的Ree
  • springboot+mybatis自动生成插件+echars小练习

    概述 通过ajax异步从后台读取数据 用 eachars 在thymeleaf当中显示 建表用的是navicat12 支持正版 软件网盘地址 https pan baidu com s 1brJFVrdDdkP3XwkWND3 mA 1 建
  • unity webGL:collisionMeshData couldn’t be created because the mesh has been marked as non-accessible

    因为Unity从外部导入的fbx文件需要开启Read Write 功能 在webGL中才能进行MeshCollider的相关操作 如添加PointerEnter等 解决 在Inspector面板开启预置体的Read Write Enable
  • cmake 编译boost库遇到的坑

    错误 CMakeFiles main dir main cpp o In function boost asio detail posix event posix event usr local include boost asio det
  • ChatGPT将抢占谁的工作,未来如何应对

    AI人工智能领域里程碑式应用 ChatGPT影响力已经越来越大 激起大家强烈好奇心的同时 也让一些人发出了 感觉自己快要失业了 的焦虑 今天先说一下哪些人的工作会受到 ChatGPT等AI人工智能影响 从工业时代到数字时代这100多年的发展
  • LeetCode之最值问题系列问题求解

    最值系列题目求解 这类型题目的特点就是一个数组 或者字符串 给的条件是连续或者不连续 或者给定限定条件进行求解的情况 解题的关键 采用两个变量 一个变量记录前面的条件 或者最后一个不满足题意的index 或者最小值 比如股票题目当中j 或者