大于等于序列前缀和的最小缺失整数
大于等于序列前缀和的最小缺失整数 题目描述 给你一个下标从 0 开始的整数数组 nums。 如果一个前缀 nums[0..i] 满足:对于 1 <= j <= i 的所有元素都有 nums[j] = nums[j - 1] + 1,那么我们称这个前缀是一个 顺序前缀。特殊情况是,只包含 nums[0] 的前缀(也就是 nums[0..0])也是一个 顺序前缀。 请你返回 nums 中没有出现过的 最小 整数 x,满足 x 大于等于 最长 顺序前缀的 和。(力扣 2996) 先别急着写代码,把题目看懂 这题考察的其实不是算法有多难,而是你读题读得够不够细。很多同学一上来就懵,觉得这不就是个"找缺失整数"吗?其实坑藏在"前缀"和"最长"这两个词里。 坑一:什么是"顺序前缀"?——必须从下标 0 开始 先看一个具体例子,比如输入: ums = [3, 4, 5, 1, 12, 14, 13] 很多人第一反应是:哎,12, 13, 14 不也是连续的(每个都比前一个大 1)吗?怎么最长顺序前缀不是它们? 这里就是最容易踩的坑! “前缀”(prefix)的定义,是从 nums[0] 开始、连续的一段。 前缀永远要从数组的第一个元素 nums[0] 出发: nums[0..0] = [3] nums[0..1] = [3, 4] nums[0..2] = [3, 4, 5] nums[0..3] = [3, 4, 5, 1] 而 12, 13, 14 虽然在数组里彼此连续,但它们不是从 nums[0] 开始的,所以它们根本不叫"前缀",直接被排除掉。 ...