100266. 交替子数组计数

100266. 交替子数组计数

给你一个二进制数组nums 。

如果一个子数组中 不存在 两个 相邻 元素的值 相同 的情况,我们称这样的子数组为交替子数组 。要求返回数组 nums 中交替子数组的数量。

示例 1:

输入: nums = [0,1,1,1]

输出: 5

解释:以下子数组是交替子数组:[0] 、[1] 、[1] 、[1] 以及 [0,1] 。

示例 2:

输入: nums = [1,0,1,0]

输出: 10

解释:数组的每个子数组都是交替子数组。可以统计在内的子数组共有 10 个。

提示:

1 <= nums.length <= 10^5
nums[i] 不是 0 就是 1 。

解题思路与代码实现

使用滑动窗口求解

class Solution {
	
    public long countAlternatingSubarrays(int[] nums) {
        // 双指针,滑动窗口:窗口[left,right)记录当前连续的交替子数组
        long res = 0;
        int left = 0, right = 1;
        while (right < nums.length) {
        	// 如果窗口内不存在 两个 相邻 元素的值 相同 ,扩展右边界
            while (right < nums.length && nums[right] != nums[right - 1]) {
                right++;
            }
            // 累加当前结果并更新窗口
            long len = right - left;	// 用long防止10^5 * 10^5上溢出
            res += (len + 1) * len/ 2;
            left = right++;	// 更新左边界
        }
        // 考虑边界情况,如0,1,1,1,left=3,right=4,直接退出了循环会少算一次
        if (left == nums.length - 1) {
            res++;
        }
        // 返回结果
        return res;
    }
}

踩坑点

最初计算len时用int接收,导致局部用例数据溢出

相关推荐

  1. 100266. 交替数组计数

    2024-04-01 05:18:03       38 阅读
  2. LeetCode 2765. 最长交替数组

    2024-04-01 05:18:03       67 阅读
  3. leetcode2765. 最长交替数组

    2024-04-01 05:18:03       56 阅读
  4. 力扣2765-最长交替数组

    2024-04-01 05:18:03       69 阅读
  5. 2765. 最长交替数组 ( leetcode 01 - 23 每日 )

    2024-04-01 05:18:03       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 05:18:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 05:18:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 05:18:03       82 阅读
  4. Python语言-面向对象

    2024-04-01 05:18:03       91 阅读

热门阅读

  1. 蓝桥杯该如何准备

    2024-04-01 05:18:03       46 阅读
  2. 【Redis】多机部署Redis-sentinel

    2024-04-01 05:18:03       40 阅读
  3. Web框架开发-Django-extra过滤

    2024-04-01 05:18:03       34 阅读
  4. PostCSS深入解析:安装、配置与高效使用

    2024-04-01 05:18:03       48 阅读
  5. 2-Jquery层次选择器

    2024-04-01 05:18:03       40 阅读
  6. 测试方法--一起学习吧之测试

    2024-04-01 05:18:03       41 阅读