您的位置:首页 > 科技 > IT业 > leetcode-每日一题

leetcode-每日一题

2024/10/6 5:58:54 来源:https://blog.csdn.net/weixin_61810048/article/details/140234816  浏览:    关键词:leetcode-每日一题

3101. 交替子数组计数icon-default.png?t=N7T8https://leetcode.cn/problems/count-alternating-subarrays/

给你一个

二进制数组

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 。
class Solution {public long countAlternatingSubarrays(int[] nums) {int len = nums.length;if(len == 1){return len;} long num = len;for(int i = 1;i<len;i++){int j = i;while(i<len && nums[i] != nums[i-1]){i++;}long k1 = i-j;long k2 = 1+k1;num += (k1*k2)/2;}return num;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com