LeetCode . 3101. 交替子数组计数

66 阅读1分钟

题目

给你一个

二进制数组

nums 。

如果一个

子数组

中 不存在 两个 相邻 元素的值 相同 的情况,我们称这样的子数组为 交替子数组

返回数组 nums 中交替子数组的数量。

思路

通过观察示例发现,先定义 ans 的数量为数组的长度, 然后每多一个符合条件的子数组新子数组生成的交替子数组的数量就会 +1 ;

代码

class Solution {
    public long countAlternatingSubarrays(int[] nums) {
        long ans = nums.length;
        int count = 0;
        int pre = 0;
        for (int i = 0; i < nums.length; i++) {
            if (i == 0) {
                 pre = nums[0];
            }
            if (i != 0 && pre != nums[i]) {
                count++;
                pre = nums[i];
            }else{
                count = 0;
            }
            ans += count;
        }
        return ans;
    }
}

题解

灵神题解:leetcode.cn/problems/co…

刚开始提交的时候 ans 设置的 int 类型. 我还在纳闷为什么倒数第二个示例过不去...看了题解才发现返回值类型定义错了...