Algorithm/src/main/java/All/CountAlternatingSubarrays.java

39 lines
1.2 KiB
Java
Raw Normal View History

2025-09-27 12:25:49 +08:00
package All;
/**
* 题目 3101. 交替子数组计数
* 描述给你一个二进制数组nums
* 如果一个子数组中 不存在 两个 相邻 元素的值 相同 的情况我们称这样的子数组为 交替子数组
* 返回数组 nums 中交替子数组的数量
示例 1
输入 nums = [0,1,1,1]
输出 5
解释
以下子数组是交替子数组[0] [1] [1] [1] 以及 [0,1]
* 链接https://leetcode.cn/problems/count-alternating-subarrays/
*/
public class CountAlternatingSubarrays {
public long countAlternatingSubarrays(int[] nums) {
int prenum=nums[0],precnt=1;
long total=1;
for (int i = 1; i < nums.length; i++) {
if(prenum==nums[i]){
precnt=1;
}else {
precnt++;
}
prenum=nums[i];
total += precnt;
}
return total;
}
public static void main(String[] args) {
CountAlternatingSubarrays countAlternatingSubarrays = new CountAlternatingSubarrays();
int[] nums = new int[]{0,1,1,1};
long total=countAlternatingSubarrays.countAlternatingSubarrays(nums);
System.out.println(total);
}
}