贪心算法:5.最长递增子序列

题目链接:300. 最长递增子序列(中等)

算法原理:

解法+交换论证证明:贪心

Java代码:

java 复制代码
import java.util.ArrayList;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-11-01
 * Time: 00:02
 */
class Solution {
    //300.最长递增子序列
    public int lengthOfLIS(int[] nums) {
        //贪心解法:自己真写不出来,看了吴小哲的代码还琢磨琢磨才弄上的
        //当已经是2.4.7.13时再来个8是把13覆盖掉的
        ArrayList<Integer> ret=new ArrayList<>();
        int n=nums.length;
        ret.add(nums[0]);
        for(int i=1;i<n;i++){
            if(nums[i]>ret.get(ret.size()-1)) ret.add(nums[i]);
            else{
                int left=0,right=ret.size()-1;
                while(left<right){
                    int mid=(left+right)/2;
                    if(ret.get(mid)<nums[i]) left=mid+1;
                    else right=mid;
                }
                ret.set(left,nums[i]);
            }
        }
        return ret.size();
    }
}
相关推荐
沉迷技术逻辑4 小时前
Docker部署与常用命令
java·docker·eureka
慕容青峰4 小时前
【牛客周赛 107】E 题【小苯的刷怪笼】题解
c++·算法·sublime text
听风吟丶4 小时前
Java HashMap 深度解析:从底层结构到性能优化实战
java·开发语言·性能优化
KakiNakajima4 小时前
浅谈幂等性基本实现原理【kaki备忘录】
java
柯南二号4 小时前
【后端】【Java】一文详解Spring Boot RESTful 接口统一返回与异常处理实践
java·spring boot·状态模式·restful
算法熔炉4 小时前
深度学习面试八股文(2)——训练
人工智能·深度学习·算法
南龙大魔王4 小时前
spring ai Alibaba(SAA)学习(二)
java·人工智能·spring boot·学习·ai
ZBritney4 小时前
JAVA中的异常二
java·开发语言
EXtreme354 小时前
【数据结构】打破线性思维:树形结构与堆在C语言中的完美实现方案
c语言·数据结构·算法··heap·完全二叉树·topk