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

代码随想录算法训练营day43|动态规划part10

第一题:300. Longest Increasing Subsequence

class Solution {public int lengthOfLIS(int[] nums) {if (nums.length <= 1) return nums.length;int[] dp = new int[nums.length];int res = 1;Arrays.fill(dp, 1);for (int i = 1; i < dp.length; i++) {for (int j = 0; j < i; j++) {if (nums[i] > nums[j]) {dp[i] = Math.max(dp[i], dp[j] + 1);}}res = Math.max(res, dp[i]);}return res;}
}

第二题: 674. Longest Continuous Increasing Subsequence 

动态规划:

 /*** 1.dp[i] 代表当前下标最大连续值* 2.递推公式 if(nums[i+1]>nums[i]) dp[i+1] = dp[i]+1* 3.初始化 都为1* 4.遍历方向,从其那往后* 5.结果推导 。。。。* @param nums* @return*/public static int findLengthOfLCIS(int[] nums) {int[] dp = new int[nums.length];for (int i = 0; i < dp.length; i++) {dp[i] = 1;}int res = 1;//可以注意到,這邊的 i 是從 0 開始,所以會出現和卡哥的C++ code有差異的地方,在一些地方會看到有 i + 1 的偏移。for (int i = 0; i < nums.length - 1; i++) {if (nums[i + 1] > nums[i]) {dp[i + 1] = dp[i] + 1;}res = res > dp[i + 1] ? res : dp[i + 1];}return res;}

动态规划状态压缩

class Solution {public int findLengthOfLCIS(int[] nums) {// 记录以 前一个元素结尾的最长连续递增序列的长度 和 以当前 结尾的......int beforeOneMaxLen = 1, currentMaxLen = 0;// res 赋最小值返回的最小值1int res = 1;for (int i = 1; i < nums.length; i ++) {currentMaxLen = nums[i] > nums[i - 1] ? beforeOneMaxLen + 1 : 1;beforeOneMaxLen = currentMaxLen;res = Math.max(res, currentMaxLen);}return res;}
}

贪心法:

public static int findLengthOfLCIS(int[] nums) {if (nums.length == 0) return 0;int res = 1; // 连续子序列最少也是1int count = 1;for (int i = 0; i < nums.length - 1; i++) {if (nums[i + 1] > nums[i]) { // 连续记录count++;} else { // 不连续,count从头开始count = 1;}if (count > res) res = count;}return res;
}

第三题: 718. Maximum Length of Repeated Subarray

// 版本一
class Solution {public int findLength(int[] nums1, int[] nums2) {int result = 0;int[][] dp = new int[nums1.length + 1][nums2.length + 1];for (int i = 1; i < nums1.length + 1; i++) {for (int j = 1; j < nums2.length + 1; j++) {if (nums1[i - 1] == nums2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;result = Math.max(result, dp[i][j]);}}}return result;}
}// 版本二: 滚动数组
class Solution {public int findLength(int[] nums1, int[] nums2) {int[] dp = new int[nums2.length + 1];int result = 0;for (int i = 1; i <= nums1.length; i++) {for (int j = nums2.length; j > 0; j--) {if (nums1[i - 1] == nums2[j - 1]) {dp[j] = dp[j - 1] + 1;} else {dp[j] = 0;}result = Math.max(result, dp[j]);}}return result;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 4 C 语言变量、printf 基本输出、scanf 基本输入、关键字、标识符及其命名规则
  • day36——homework
  • cocosUI多分辨率适配
  • 初心 | AIGC时代下的思想蜕变
  • Java 阿里云视频直播开发流程
  • C语言中10个字符串函数详解
  • 你对开源项目有什么期待?
  • 阿里云-java调用短信服务,第三方接口的开启(傻瓜式教程)
  • SSLVPN对比IPSECVPN安全设备的起源、发展、以及目前行业使用场景
  • KEEPALIVED是什么?以及实现各功能的配置实验
  • 一键换肤(Echarts 自定义主题)
  • 89. UE5 RPG 实现伤害 冷却 消耗技能描述
  • 堆(数据结构)
  • 【C语言篇】C语言常考及易错题整理DAY3
  • 探索粉色扶郎花的浪漫世界:花语与新品花束推荐
  • [译] React v16.8: 含有Hooks的版本
  • 【个人向】《HTTP图解》阅后小结
  • crontab执行失败的多种原因
  • HTTP中GET与POST的区别 99%的错误认识
  • JavaScript设计模式与开发实践系列之策略模式
  • Java-详解HashMap
  • MySQL用户中的%到底包不包括localhost?
  • python docx文档转html页面
  • sublime配置文件
  • vuex 笔记整理
  • 从输入URL到页面加载发生了什么
  • 搭建gitbook 和 访问权限认证
  • 那些年我们用过的显示性能指标
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 巧用 TypeScript (一)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 通过几道题目学习二叉搜索树
  • 写代码的正确姿势
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 怎么将电脑中的声音录制成WAV格式
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • # dbt source dbt source freshness命令详解
  • #ifdef 的技巧用法
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (ZT)一个美国文科博士的YardLife
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (轉貼) UML中文FAQ (OO) (UML)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • *上位机的定义
  • .bat批处理出现中文乱码的情况
  • .net framework 4.0中如何 输出 form 的name属性。
  • .Net FrameWork总结