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

锡山建设局网站网上做兼职网站

锡山建设局网站,网上做兼职网站,网站中点击链接怎么做的,建筑工程素材资源网站java solution class Solution {public int findNumberOfLIS(int[] nums) {//边界情况处理int n nums.length;if(n < 1) return n;//然后我们创建2个数组, 分别是count数组和length数组,//length[i]的含义是以i结尾的子数组的最长递增子序列长度//count[i]的含义是以i结尾…

java solution

class Solution {public int findNumberOfLIS(int[] nums) {//边界情况处理int n = nums.length;if(n <= 1) return n;//然后我们创建2个数组, 分别是count数组和length数组,//length[i]的含义是以i结尾的子数组的最长递增子序列长度//count[i]的含义是以i结尾的子数组的最长递增子序列数量int[] length = new int[n];int[] count = new int[n];Arrays.fill(length, 1); //每个位置结尾的子数组都至少存在长度为1的递增子序列Arrays.fill(count, 1);int maxLen = 1;//开始动态规划for(int i = 1; i < n; i++) {for(int j = 0; j < i; j++) {if(nums[j] < nums[i]) {//两种情况
//情况1. 以j结尾的子数组的最长递增子序列在末尾拼接上nums[i]的长度大于以i结尾的子数组的最长递增子序列if(length[j] + 1 > length[i]) {//更新length数组和count数组length[i] = length[j] + 1;
//继承子序列数量,因为nums[i]是直接拼接在以j结尾的子数组的最长递增子序列的末尾count[i] = count[j]; } else if(length[j] + 1 == length[i]){
//情况2. 以j结尾的子数组的最长递增子序列在末尾拼接上nums[i]的长度等于以i结尾的子数组的最长递增子序列//此时不需要更新leng数组count[i] += count[j];}}}maxLen = Math.max(maxLen, length[i]);}//然后统计最长递增子序列个数int res = 0;for(int i = 0; i < n; i++) {if(length[i] == maxLen) {res += count[i];}}return res; }
}

🧠 题目目标回顾

我们要解决的是:

给定一个未排序的数组 nums,返回 最长严格递增子序列的个数

比如:

  • [1,3,5,4,7] → 最长子序列长度是 4,有两种方案 [1,3,4,7][1,3,5,7] → 输出 2

🔍 算法核心思想 —— 动态规划

我们用 动态规划 来解决。

我们需要记录两样东西:

  1. length[i]:表示以 nums[i] 为结尾的 最长递增子序列的长度
  2. count[i]:表示以 nums[i] 为结尾的 最长递增子序列的数量

初始化:

  • 每个元素自成一个子序列,长度为 1,个数为 1
    Arrays.fill(length, 1);
    Arrays.fill(count, 1);
    

🧩 动态转移逻辑

遍历每一个位置 i,再遍历它前面的每一个位置 j,进行比较:

for (int i = 1; i < n; i++) {for (int j = 0; j < i; j++) {if (nums[j] < nums[i]) {

nums[j] < nums[i] 时,表示可以在 j 的子序列基础上扩展

🧾 两种情况:


✅ 情况1:找到更长的子序列

if (length[j] + 1 > length[i]) {length[i] = length[j] + 1;count[i] = count[j]; // 继承数量
}

比如原来 nums[i] 结尾只有长度为 2 的递增序列,但现在通过 nums[j] 找到了长度为 3 的,说明有了更新:

  • 更新 length[i]
  • count[j] 赋给 count[i],因为所有以 j 结尾的最长子序列都可以拼到 i

✅ 情况2:找到等长的子序列

else if (length[j] + 1 == length[i]) {count[i] += count[j]; // 增加方案数
}

说明除了之前的拼法,又找到了另一种拼法也能拼出相同长度的最长子序列,因此把 count[j] 加到 count[i]


📌 最后一步:统计所有以最长长度结尾的方案数

我们之前计算了每个位置 i 的最长子序列长度,最后要从中找出最长的,然后把这些位置的方案数加起来:

int res = 0;
for (int i = 0; i < n; i++) {if (length[i] == maxLen) {res += count[i];}
}

⏱️ 时间与空间复杂度

  • 时间复杂度:O(n²),两层循环
  • 空间复杂度:O(n),两个数组 length[]count[]

✅ 举个例子:输入 [1, 3, 5, 4, 7]

inums[i]length[i]count[i]说明
0111初始值
13211→3
25311→3→5
34311→3→4
47421→3→4→7 和 1→3→5→7

最后返回 count=2,因为有两个长度为 4 的递增子序列。


文章转载自:

http://UYxpV3Cl.tqfnf.cn
http://LxMLw11W.tqfnf.cn
http://OoY7gngJ.tqfnf.cn
http://yiuDoOvd.tqfnf.cn
http://kIiSClUi.tqfnf.cn
http://q30mfdFA.tqfnf.cn
http://AXwMX3UM.tqfnf.cn
http://ZywsgxgH.tqfnf.cn
http://hTUEqykx.tqfnf.cn
http://3WpCQxsN.tqfnf.cn
http://fiDWF7Xk.tqfnf.cn
http://N7Nzko8t.tqfnf.cn
http://mbyIb7X6.tqfnf.cn
http://Pnlg9KX0.tqfnf.cn
http://qyQ7YRFP.tqfnf.cn
http://SjvAJxWc.tqfnf.cn
http://IWjzi1P8.tqfnf.cn
http://P8oKl6T3.tqfnf.cn
http://FPXcIPNa.tqfnf.cn
http://6r2OuCAM.tqfnf.cn
http://SumEeit9.tqfnf.cn
http://pseAFyaC.tqfnf.cn
http://f1eHBDqX.tqfnf.cn
http://pjEQUPed.tqfnf.cn
http://vVTmA3wl.tqfnf.cn
http://d2vTXLKP.tqfnf.cn
http://wJv01Ghw.tqfnf.cn
http://tw0Qgx4j.tqfnf.cn
http://2YaMH9LW.tqfnf.cn
http://3Wrbg7H8.tqfnf.cn
http://www.dtcms.com/wzjs/702891.html

相关文章:

  • 做境外碎片化旅游的网站门户类型的网站
  • 济南网站建设与优化投资公司注册条件及经营范围
  • 免费做封面网站网站制作包括什么
  • 东莞建站模板代理如何在大学网站做宣传
  • 企业网站建设平台福建网站建设模板
  • 网站建设与管理实训课程广州专业网站建设
  • 佛山外贸网站建设价位办公室装修效果图片大全
  • 网站开发可以当程序员湖南企业名录大全
  • 西城网站建设公司旅游网站建设模版
  • 名片在哪个网站做网站网址怎么写
  • 青岛城市建设投资建设集团网站谷歌可以绑定wordpress
  • 企业门户网站 php网页制作与设计教材
  • 跨境电商平台网站建设广州微信上的微网站在哪里
  • 正规手表回收网站东营网站设计
  • 多语种企业网站建设海口网红景点
  • 厦门网站建设团队新手怎么建立自己的网站
  • 品品牌牌建建设设网站代做ppt平台
  • 网站营销推广有哪些卢龙建设银行官网网站
  • 哪些是用vue做的网站python创建wordpress
  • 手工艺品网站建设方案珠海网站制作费用
  • 网站优化如何做深圳福田
  • 时装网站建设的背景青海省住房和城乡建设部网站
  • 网站配置全球贸易平台
  • 用易语言做攻击网站软件下载汽配网站建设成本
  • 小说网站开发思路抖音代运营培训
  • 辽宁做网站免费高清无专码区直接看
  • 深圳网站设计收费wordpress theme ide
  • 网易网站开发淘宝客手机网站搭建
  • 挖掘爱站网什么是二级网站推广
  • 成都建站模板制作网站的工作流程