美文网首页js css html
【算法题】2593. 标记所有元素后数组的分数

【算法题】2593. 标记所有元素后数组的分数

作者: 程序员小2 | 来源:发表于2023-04-17 06:51 被阅读0次

题目:

给你一个数组 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 。
    示例 2:

输入:nums = [2,3,5,1,3,2]
输出:5
解释:我们按照如下步骤标记元素:

  • 1 是最小未标记元素,所以标记它和相邻两个元素:[2,3,5,1,3,2] 。
  • 2 是最小未标记元素,由于有两个 2 ,我们选择最左边的一个 2 ,也就是下标为 0 处的 2 ,以及它右边相邻的元素:[2,3,5,1,3,2] 。
  • 2 是仅剩唯一未标记的元素,所以我们标记它:[2,3,5,1,3,2] 。
    总得分为 1 + 2 + 2 = 5 。

提示:

1 <= nums.length <= 10^5
1 <= nums[i] <= 10^6

java代码:

class Solution {
    public long findScore(int[] nums) {
        int n = nums.length;
        var ids = new Integer[n];
        for (int i = 0; i < n; ++i) ids[i] = i;
        Arrays.sort(ids, (i, j) -> nums[i] - nums[j]);

        long ans = 0;
        var vis = new boolean[n + 2]; // 保证下标不越界
        for (int i : ids)
            if (!vis[i + 1]) { // 避免 -1,偏移一位
                vis[i] = vis[i + 2] = true;
                ans += nums[i];
            }
        return ans;
    }
}

相关文章

  • 深入理解JAVA虚拟机第五章

    GC算法: 标记-清除算法:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。 复制-清除算法...

  • 标记清除算法

    标记清除算法 “标记-清除”算法是最基础的算法,分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后...

  • 垃圾回收有哪些算法,各自的特点?

    标记-清除算法标记-清除算法分为“标记”和“清除”阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标...

  • 排序算法06:快速排序

    算法介绍   快速排序是一种分治的排序算法。排序逻辑为:先挑一个元素来切分数组,最终让该元素的左侧都小于该元素,右...

  • 5)垃圾收集算法

    标记-清除算法 算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的...

  • 垃圾回收机制

    垃圾收集算法与GC ①标记--清除算法(老生代)首先标记出所有需要回收的对象,在标记完后统一回收掉所有被标记的对象...

  • Java的垃圾收集算法

    1. 标记-清除算法 算法分为标记 清除两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收掉所有标记的对...

  • 垃圾回收器

    垃圾收集算法 标记-清除算法   算法分为“标记”和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回...

  • 垃圾收集算法-垃圾收集器

    垃圾收集算法 标记-清除算法 算法分为“标记”和“清除”阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所...

  • 垃圾收集算法

    标记-清除算法 算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它...

网友评论

    本文标题:【算法题】2593. 标记所有元素后数组的分数

    本文链接:https://www.haomeiwen.com/subject/ragqjdtx.html