1、3079. 求出加密整数的和
简单
给你一个整数数组 nums ,数组中的元素都是 正 整数。定义一个加密函数 encrypt ,encrypt(x) 将一个整数 x 中 每一个 数位都用 x 中的 最大 数位替换。比方说 encrypt(523) = 555 且 encrypt(213) = 333 。
请你返回数组中所有元素加密后的 和 。
示例 1:
**输入:**nums = [1,2,3]
**输出:**6
**解释:**加密后的元素位 [1,2,3] 。加密元素的和为 1 + 2 + 3 == 6 。
示例 2:
**输入:**nums = [10,21,31]
**输出:**66
**解释:**加密后的元素为 [11,22,33] 。加密元素的和为 11 + 22 + 33 == 66 。
提示:
1 <= nums.length <= 501 <= nums[i] <= 1000
简单模拟
| |
| |
2、3080. 执行操作标记数组中的元素
中等
给你一个长度为 n 下标从 0 开始的正整数数组 nums 。
同时给你一个长度为 m 的二维操作数组 queries ,其中 queries[i] = [indexi, ki] 。
一开始,数组中的所有元素都 未标记 。
你需要依次对数组执行 m 次操作,第 i 次操作中,你需要执行:
- 如果下标
indexi对应的元素还没标记,那么标记这个元素。 - 然后标记
ki个数组中还没有标记的 最小 元素。如果有元素的值相等,那么优先标记它们中下标较小的。如果少于ki个未标记元素存在,那么将它们全部标记。
请你返回一个长度为 m 的数组 answer ,其中 answer[i]是第 i 次操作后数组中还没标记元素的 和 。
示例 1:
**输入:**nums = [1,2,2,1,2,3,1], queries = [[1,2],[3,3],[4,2]]
输出:[8,3,0]
解释:
我们依次对数组做以下操作:
- 标记下标为
1的元素,同时标记2个未标记的最小元素。标记完后数组为nums = [***1***,***2***,2,***1***,2,3,1]。未标记元素的和为2 + 2 + 3 + 1 = 8。 - 标记下标为
3的元素,由于它已经被标记过了,所以我们忽略这次标记,同时标记最靠前的3个未标记的最小元素。标记完后数组为nums = [***1***,***2***,***2***,***1***,***2***,3,***1***]。未标记元素的和为3。 - 标记下标为
4的元素,由于它已经被标记过了,所以我们忽略这次标记,同时标记最靠前的2个未标记的最小元素。标记完后数组为nums = [***1***,***2***,***2***,***1***,***2***,***3***,***1***]。未标记元素的和为0。
示例 2:
**输入:**nums = [1,4,2,3], queries = [[0,1]]
输出:[7]
**解释:**我们执行一次操作,将下标为 0 处的元素标记,并且标记最靠前的 1 个未标记的最小元素。标记完后数组为 nums = [***1***,4,***2***,3] 。未标记元素的和为 4 + 3 = 7 。
提示:
n == nums.lengthm == queries.length1 <= m <= n <= 1051 <= nums[i] <= 105queries[i].length == 20 <= indexi, ki <= n - 1
| |