ToB企服应用市场:ToB评测及商务社交产业平台

标题: LeetCode刷题 | Day 2 最长严格递增或递减子列表(Longest Increasing or D [打印本页]

作者: 大连密封材料    时间: 2024-6-11 08:46
标题: LeetCode刷题 | Day 2 最长严格递增或递减子列表(Longest Increasing or D
LeetCode刷题 | Day 2 最长严格递增或递减子列表(Longest Increasing Decreasing SubList)

<hr>
  
<hr> 前言

LeetCode位置:3105. 最长的严格递增或递减子数组
一样平常刷题,维持手感,同步学习英语,刷题顺序参考B站UP@justyyuk的系列视频,感兴趣的点波关注。
学海无涯,大路千万,感恩此程,彼此朴拙陪伴!

Ps:第一次刷到的道友留步,这里拉齐一下信息。文章主要记录视频中的主要内容,算法思路会按照个人理解,用伪代码+举例每步输出的方式呈现。代码部门会以Python和C++语法进行呈现。文章末了会总结一些英语词汇。OK,就啰嗦这么多,开始进步[干杯‍]
<hr> 一、题目概述

本题与UP主justyyuk的题目差异(UP主题目:最长严格递增然后递减子列表),但解题思路类似(末了一步差异),故这里以LeetCode为主。

输入:nums列表
输出:最长严格递增然后递减子列表长度
   PS:
    
  二、解题方法

2.1 动态规划头脑

2.1.1 思路讲解

    Ps: 动态规划(Dynamic Programming)特征
  - 最优子布局:
  - 动态规划要求问题具有最优子布局性质,即问题的最优解包罗其子问题的最优解。
  - 重叠子问题:
  - 动态规划必要问题具有重叠子问题性质,即差异的子问题在求解时会重复出现。
  - 状态转移方程:
- 动态规划通过状态转移方程将问题分解为子问题,并通过子问题的解来推导原问题的解。
- 全局最优解:
- 动态规划通过观察全部可能的子问题组合来确保找到全局最优解。
- 影象化或表格法:
- 动态规划通常使用影象化搜索或自底向上的表格法来避免重复计算。
  
  2.1.2 伪代码 + 徐徐输出示例

  1. # 伪代码示例
  2. 函数 longestMonotonicSubarray(nums):
  3.         n = nums 的长度
  4.         初始化 inc 数组为 [1] * n
  5.         初始化 dec 数组为 [1] * n
  6.        
  7.         对于 i 从 1 到 n-1:
  8.     如果 nums[i] > nums[i-1]:
  9.         inc[i] = inc[i-1] + 1
  10.         对于 i 从 n-2 到 0:
  11.             如果 nums[i] > nums[i+1]:
  12.                 dec[i] = dec[i+1] + 1
  13.        
  14.         ans = inc 和 dec 数组中的最大值
  15.         返回 ans
  16. # 逐步输出示例
  17. 输入: nums = [1, 2, 2, 3, 2, 1, 4]
  18. 步骤:
  19. 1. n = 7
  20. 2. 初始化 inc 数组为 [1, 1, 1, 1, 1, 1, 1]
  21. 3. 初始化 dec 数组为 [1, 1, 1, 1, 1, 1, 1]
  22. 4. 第一个 for 循环 (计算递增子数组长度):
  23.         i = 1, nums[1] (2) > nums[0
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4