力扣:3101. 交替子数组计数

3101. 交替子数组计数

给你一个二进制数组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 <= 105
  • nums[i] 不是 0 就是 1
java 复制代码
class Solution {
    public long countAlternatingSubarrays(int[] nums) {
        long  ans = 1;
        for(int end = 1,start = 0;end <nums.length;end++){
            if(nums[end] == nums[end -1]){
                start = end;
            }
            //如果一个数组为交替
            ans += end - start + 1; //end-start+1计算的是start到end的子数组数量,但是单个只包含end
        }
        return ans;
    }
}
相关推荐
阿梅要做最快乐的仔几秒前
链表环问题:快慢指针的经典应用
数据结构·链表
setmoon2145 分钟前
多协议网络库设计
开发语言·c++·算法
Sylvia-girl7 分钟前
删除有序数组中的重复项
数据结构·算法
2501_908329858 分钟前
嵌入式LinuxC++开发
开发语言·c++·算法
Storynone8 分钟前
【Day30】卡码网:46. 携带研究材料,LeetCode:416. 分割等和子集
python·算法·leetcode
少许极端10 分钟前
算法奇妙屋(三十四)-贪心算法学习之路 1
学习·算法·贪心算法
兑生12 分钟前
【灵神题单·贪心】3010. 将数组分成最小总代价的子数组 I | Java
java·开发语言·算法
Wave84514 分钟前
数据结构—栈与队列
数据结构
垫脚摸太阳20 分钟前
二分查找经典算法题--数的范围
数据结构·算法
噜啦噜啦嘞好20 分钟前
算法篇:二分查找
数据结构·c++·算法·leetcode