unilm 联合对齐-翻译实战指南:基于 fairseq 的 Jointly Learning to Align and Translate(Garg et al., 2019)完整训练与评估流程
2026/9/13 4:02:32
题目链接
给定一个整数数组nums,判断是否存在长度为3的递增子序列,即是否存在下标i < j < k,使得nums[i] < nums[j] < nums[k]。
true,否则返回false。dp[i]表示以nums[i]结尾的最长递增子序列的长度。i,遍历所有j < i,若nums[j] < nums[i],则dp[i] = max(dp[i], dp[j] + 1)。dp数组,若存在值 ≥ 3,直接返回true。O(n²),空间复杂度O(n)(需存储dp数组)。a、b分别记录长度为1和长度为2的递增子序列的最小末尾值,遍历数组时更新这两个变量,一旦找到比b大的元素,说明存在长度为3的递增子序列。[2,1,5,0,4,6]为例):a = ∞,b = ∞。x:x ≤ a→ 更新a = x(保持长度1的子序列末尾最小);a < x ≤ b→ 更新b = x(保持长度2的子序列末尾最小);x > b→ 说明存在a < b < x,即长度为3的递增子序列,直接返回true。false。O(n)(仅需一次遍历),空间复杂度O(1)(仅用两个变量),是更优的解法。