美文网首页
【算法题】2763. 所有子数组中不平衡数字之和

【算法题】2763. 所有子数组中不平衡数字之和

作者: 程序员小2 | 来源:发表于2023-07-25 22:05 被阅读0次

题目:

一个长度为 n 下标从 0 开始的整数数组 arr 的 不平衡数字 定义为,在 sarr = sorted(arr) 数组中,满足以下条件的下标数目:

0 <= i < n - 1 ,和
sarr[i+1] - sarr[i] > 1
这里,sorted(arr) 表示将数组 arr 排序后得到的数组。

给你一个下标从 0 开始的整数数组 nums ,请你返回它所有 子数组 的 不平衡数字 之和。

子数组指的是一个数组中连续一段 非空 的元素序列。

示例 1:

输入:nums = [2,3,1,4]
输出:3
解释:总共有 3 个子数组有非 0 不平衡数字:

  • 子数组 [3, 1] ,不平衡数字为 1 。
  • 子数组 [3, 1, 4] ,不平衡数字为 1 。
  • 子数组 [1, 4] ,不平衡数字为 1 。
    其他所有子数组的不平衡数字都是 0 ,所以所有子数组的不平衡数字之和为 3 。
    示例 2:

输入:nums = [1,3,3,3,5]
输出:8
解释:总共有 7 个子数组有非 0 不平衡数字:

  • 子数组 [1, 3] ,不平衡数字为 1 。
  • 子数组 [1, 3, 3] ,不平衡数字为 1 。
  • 子数组 [1, 3, 3, 3] ,不平衡数字为 1 。
  • 子数组 [1, 3, 3, 3, 5] ,不平衡数字为 2 。
  • 子数组 [3, 3, 3, 5] ,不平衡数字为 1 。
  • 子数组 [3, 3, 5] ,不平衡数字为 1 。
  • 子数组 [3, 5] ,不平衡数字为 1 。
    其他所有子数组的不平衡数字都是 0 ,所以所有子数组的不平衡数字之和为 8 。

提示:

1 <= nums.length <= 1000
1 <= nums[i] <= nums.length

java代码:

class Solution {
    public int sumImbalanceNumbers(int[] nums) {
        int ans = 0, n = nums.length;
        var vis = new boolean[n + 2];
        for (int i = 0; i < n; i++) {
            Arrays.fill(vis, false);
            vis[nums[i]] = true;
            int cnt = 0;
            for (int j = i + 1; j < n; j++) {
                int x = nums[j];
                if (!vis[x]) {
                    cnt++;
                    if (vis[x - 1]) cnt--;
                    if (vis[x + 1]) cnt--;
                    vis[x] = true;
                }
                ans += cnt;
            }
        }
        return ans;
    }
}

相关文章

  • LeetCode算法系列_0891_子序列宽度之和

    LeetCode算法系列0891子序列宽度之和 题目描述 给定一个整数数组 A ,考虑 A 的所有非空子序列。 对...

  • 求三个数和为0

    题目描述: 给定一个数组,要求在这个数组中找出 3 个数之和为 0 的所有组合。 Example: 算法思路 使用...

  • 最简单的算法题,你会吗?

    leetcode上算法第一题,求两数之和,是最简单的算法题。 给定一个整数数组 nums 和一个目标值 targe...

  • 剑指 offer 数组中重复的数字

    算法名称:数组中重复的数字 题目内容: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是...

  • 线段树(Segment Tree)和树状数组(Fenwick T

    前言 在刷题过程中,经常会遇到求数组某区间之和的问题:给出数组a[0...n-1],求数组下标i~j的元素之和a[...

  • leetcode刷题1

    用go语言做算法题 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的...

  • 编程记录

    code programming 计算数组子数组之和的最大值 描述:给定一个包含N个整数的数组,求数组子数组之和的...

  • 5.栈(五)

    题目汇总:https://leetcode-cn.com/tag/stack/907. 子数组的最小值之和中等(题...

  • 剑指offer刷题week 01

    原题:找出数组中重复的数字 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内。...

  • 2Sum算法

    给一个整型数组和一个目标值,判断数组中是否有两个数字之和等于目标值。 这道题是传说中经典的 “2Sum”,我们已经...

网友评论

      本文标题:【算法题】2763. 所有子数组中不平衡数字之和

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