离散期望
- 离散期望
给你一个整数数组 nums
和一个 非负 整数 k
。如果一个整数序列 seq
满足在范围下标范围 `[0, seq.length -
2]中存在 **不超过**
k个下标
i满足
seq[i] != seq[i + 1]` ,那么我们称这个整数序列为 好
序列。
请你返回 nums
中 好 子序列 的最长长度
示例 1:
输入: nums = [1,2,1,1,3], k = 2
输出: 4
解释:
最长好子序列为 [_**1**_ ,_**2**_ ,**_1_** ,_**1**_ ,3]
。
示例 2:
输入: nums = [1,2,3,4,5,1], k = 0
输出: 2
解释:
最长好子序列为 [**_1_** ,2,3,4,5,**_1_**]
。
提示:
1 <= nums.length <= 5 * 10^3
1 <= nums[i] <= 10^9
0 <= k <= min(50, nums.length)
一个整数 x
的 强数组 指的是满足和为 x
的二的幂的最短有序数组。比方说,11 的强数组为 [1, 2, 8]
。
我们将每一个正整数 i
(即1,2,3等等)的 强数组 连接得到数组 big_nums
,big_nums
开始部分为 `[1 ,
2 , 1, 2 , 4 , 1, 4 , 2, 4 , 1, 2, 4 , 8 , ...]` 。
给你一个二维整数数组 queries
,其中 queries[i] = [fromi, toi, modi]
,你需要计算
(big_nums[fromi] * big_nums[fromi + 1] * ... * big_nums[toi]) % modi
。
请你返回一个整数数组 answer
,其中 answer[i]
是第 i
个查询的答案。
示例 1:
输入: queries = [[1,3,7]]
输出:[4]
解释:
只有一个查询。
big_nums[1..3] = [2,1,2]
。它们的乘积为 4 ,4 对 7 取余数得到 4 。
示例 2:
输入: queries = [[2,5,3],[7,7,4]]
输出:[2,2]
解释:
有两个查询。
第一个查询:big_nums[2..5] = [1,2,4,1]
。它们的乘积为 8 ,8 对 3 取余数得到 2 。
第二个查询:big_nums[7] = 2
,2 对 4 取余数得到 2 。
提示:
1 <= queries.length <= 500
queries[i].length == 3
0 <= queries[i][0] <= queries[i][1] <= 10^15
1 <= queries[i][2] <= 10^5
给你一个整数数组 rewardValues
,长度为 n
,代表奖励的值。
最初,你的总奖励 x
为 0,所有下标都是未标记 的。你可以执行以下操作 任意次 :
从区间 [0, n - 1]
中选择一个 未标记 的下标 i
。
如果 rewardValues[i]
大于 你当前的总奖励 x
,则将 rewardValues[i]
加到 x
上(即 x = x + rewardValues[i]
),并标记 下标 i
。
以整数形式返回执行最优操作能够获得的最大总奖励。
示例 1:
输入: rewardValues = [1,1,3,3]
输出: 4
解释:
依次标记下标 0 和 2,总奖励为 4,这是可获得的最大值。
示例 2:
输入: rewardValues = [1,6,4,3,2]
输出: 11
解释:
依次标记下标 0、2 和 1。总奖励为 11,这是可获得的最大值。
提示:
1 <= rewardValues.length <= 5 * 10^4
1 <= rewardValues[i] <= 5 * 10^4