当前位置: 首页> 科技> IT业 > 最新新闻事件今天国内消息_装修公司排行榜十大排名_培训机构哪家好_网店运营推广中级实训

最新新闻事件今天国内消息_装修公司排行榜十大排名_培训机构哪家好_网店运营推广中级实训

时间:2025/7/11 1:04:29来源:https://blog.csdn.net/qq_42761751/article/details/144069306 浏览次数:0次
最新新闻事件今天国内消息_装修公司排行榜十大排名_培训机构哪家好_网店运营推广中级实训

题目描述:

https://leetcode.cn/problems/alternating-groups-i/description/?envType=daily-question&envId=2024-11-26
在这里插入图片描述
题目示例:
在这里插入图片描述
在这里插入图片描述

解题思路

思路一:

1.如果color.size()小于等于2,则构不成环,直接返回结果0
2.当color.size()大于等于3时,在数组color最后插入color[0]color[1],构成一个虚拟环
3.当color[i]==color[i+2]并且color[i]!=color[i+1]时,说明满足交替条件
4.代码如下:

class Solution {
public:int numberOfAlternatingGroups(vector<int>& colors) {int res = 0;int length = colors.size();if(length <=2){return res;}int num1 = colors[0];int num2 = colors[1];colors.push_back(num1);colors.push_back(num2);for(int i=0; i<length; i++){if(colors[i] == colors [i+2] && colors[i] != colors[i+1]){res +=1;}}return res;}
};

思路二(优化)

思路一的缺点:

我们需要对数组color末尾追加元素,由于vector容器底层扩容机制的存在,当元素数量达到color容量时,vector会重新开辟一块空间,将其中的元素复制到新开辟的空间中去,这样会浪费时间和空间。因此处理好边界条件,在不进行追加元素的情况下进行条件判断,可提升程序执行效率。

class Solution {
public:int numberOfAlternatingGroups(vector<int>& colors) {int n = colors.size();int res = 0;for(int i=0; i<n; i++){if(colors[(i-1+n)%n] != colors[i] && colors[(i+1+n)%n] != colors[i]){res+=1;}}return res;}
};
关键字:最新新闻事件今天国内消息_装修公司排行榜十大排名_培训机构哪家好_网店运营推广中级实训

版权声明:

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

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

责任编辑: