题目:
6351. 标记所有元素后数组的分数.md
给你一个数组 nums ,它包含若干正整数。
一开始分数 score = 0 ,请你按照下面算法求出最后分数:
从数组中选择最小且没有被标记的整数。如果有相等元素,选择下标最小的一个。
将选中的整数加到 score 中。
标记 被选中元素,如果有相邻元素,则同时标记 与它相邻的两个元素 。
重复此过程直到数组中所有元素都被标记。
请你返回执行上述算法后最后的分数。
示例 1:
输入:nums = [2,1,3,4,5,2]
输出:7
解释:我们按照如下步骤标记元素:
- 1 是最小未标记元素,所以标记它和相邻两个元素:[2,1,3,4,5,2] 。
- 2 是最小未标记元素,所以标记它和左边相邻元素:[2,1,3,4,5,2] 。
- 4 是仅剩唯一未标记的元素,所以我们标记它:[2,1,3,4,5,2] 。
总得分为 1 + 2 + 4 = 7 。思想:
直接暴力了,然后超时了,不过感觉答案也挺像暴力的。代码:
我流 1
2
3
4
5
6
7
8
9
10
11
12
13class Solution:
def findScore(self, nums: List[int]) -> int:
while set(nums) != {inf}:
print(nums)
mm = min(nums)
min_index = nums.index(mm)
grade += mm
nums[min_index] = inf
if min_index > 0:
nums[min_index - 1] = inf
if min_index < len(nums) - 1:
nums[min_index + 1] = inf
return grade
1 | class Solution: |