3101.力扣每日一题7/6 Java(接近100%解法)

  • 博客主页:音符犹如代码
  • 系列专栏:算法练习
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

目录

思路

解题方法

时间复杂度

空间复杂度

Code


思路

主要是基于对题目要求的理解和对数组遍历的应用。题目要求计算数组中所有可能的交替子数组的数量,其中交替子数组是指相邻元素不相等的子数组。

解题方法

  1. 初始化 :设置两个变量,ans 用于记录所有交替子数组的总数,cnt 用于记录以当前元素结尾的交替子数组的数量。由于每个元素自身至少可以构成一个交替子数组(即使它与前一个元素相同),因此 cnt 初始化为 1。

  2. 遍历数组:从数组的第二个元素开始遍历(因为第一个元素自身就是一个交替子数组,无需比较)。对于每个元素,检查它是否与前一个元素不同。

    • 如果不同,说明可以将前一个交替子数组扩展一个当前元素来形成新的交替子数组,因此 cnt 递增。
    • 如果相同,说明无法将前一个交替子数组扩展,因此 cnt 重置为 1,表示当前元素自身构成一个交替子数组。
  3. 累加结果 :在每次迭代中,将 cnt 的值加到 ans 上,因为 cnt 表示了以当前元素结尾的所有交替子数组的数量。

  4. 返回结果 :遍历完成后,ans 中存储的就是所有交替子数组的总数,将其返回。

时间复杂度

时间复杂度是 O(n),其中 n 是数组 nums 的长度。因为我们只需要遍历一次数组即可完成计算,所以时间复杂度与数组的长度成正比。

空间复杂度

空间复杂度是 O(1)。尽管我们使用了几个变量(anscnt 和循环变量 i),但这些变量的数量是固定的,不随输入数组的大小而增加。因此,我们可以认为算法使用的额外空间是常数级别的,即空间复杂度为 O(1)。

Code

java 复制代码
class Solution {  
    public long countAlternatingSubarrays(int[] nums) {  
        long ans = 0; // 用于累积交替子数组的总数  
        int cnt = 1;  // 以当前元素结尾的交替子数组的数量(初始化为1,因为每个元素自身都是一个交替子数组)  
        for (int i = 0; i < nums.length; i++) {  
            // 如果当前元素与前一个元素不同,则增加以当前元素结尾的交替子数组数量  
            if (i > 0 && nums[i] != nums[i - 1]) {  
                cnt++;  
            } else {  
                // 如果当前元素与前一个元素相同,则重置以当前元素结尾的交替子数组数量为1  
                cnt = 1;  
            }  
            // 将以当前元素结尾的交替子数组数量加到总数上  
            ans += cnt;  
        }  
        return ans; // 返回所有交替子数组的总数  
    }  
}

One today is worth two tomorrows. Benjamin Franklin 一个今天抵得上两个明天。------本杰明弗兰克林

相关推荐
代码改善世界1 分钟前
【matlab初阶】matlab入门知识
android·java·matlab
卓怡学长8 分钟前
m315基于java的水果网上商城的开发与设计
java·数据库·spring·tomcat·maven·intellij-idea
wuweijianlove33 分钟前
算法复杂度估算的实验建模与可视化表达的技术6
算法
执笔画流年呀34 分钟前
7大排序算法
java·算法·排序算法
AI成长日志39 分钟前
【算法学习专栏】动态规划基础·中等两题精讲(198.打家劫舍、322.零钱兑换)
学习·算法·动态规划
计算机安禾42 分钟前
【数据结构与算法】第28篇:平衡二叉树(AVL树)
开发语言·数据结构·数据库·线性代数·算法·矩阵·visual studio
测试_AI_一辰42 分钟前
AI 如何参与 Playwright 自动化维护:一次自动修复闭环实践
人工智能·算法·ai·自动化·ai编程
未来之窗软件服务1 小时前
算法设计—计算机等级考试—软件设计师考前备忘录—东方仙盟
算法·软件设计师·计算机等级考试
未来之窗软件服务1 小时前
哈夫曼树构造—计算机等级考试—软件设计师考前备忘录—东方仙盟
算法·软件设计师·计算机等级考试·仙盟创梦ide·东方仙盟
zdl6861 小时前
springboot+全局异常处理
java·spring boot·spring