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); } }