普通视图

发现新文章,点击刷新页面。
今天 — 2024年11月26日首页

遍历计数,C 0ms

Problem: 100336. 交替组 I

[TOC]

思路

直接按题意遍历计数。

Code

执行用时分布0ms击败100.00%;消耗内存分布5.69MB击败100.00%

###C

int numberOfAlternatingGroups(int* colors, int colorsSize) {
    int ans = (colors[colorsSize - 2] != colors[colorsSize - 1] && colors[colorsSize - 1] != colors[0])
            + (colors[colorsSize - 1] != colors[0] && colors[0] != colors[1]);
    for (int i = 2; i < colorsSize; ++ i)
        if ((colors[i - 2] != colors[i - 1] && colors[i - 1] != colors[i])) ++ ans;
    return ans;
}

###Python3

class Solution:
    def numberOfAlternatingGroups(self, colors: List[int]) -> int:
        n, colors = len(colors), colors + colors[:2]
        return sum(colors[i] != colors[i + 1] != colors[i + 2] for i in range(n))

您若还有不同方法,欢迎贴在评论区,一起交流探讨! ^_^

↓ 点个赞,点收藏,留个言,再划走,感谢您支持作者! ^_^

每日一题-交替组 I🟢

2024年11月26日 00:00

给你一个整数数组 colors ,它表示一个由红色和蓝色瓷砖组成的环,第 i 块瓷砖的颜色为 colors[i] :

  • colors[i] == 0 表示第 i 块瓷砖的颜色是 红色 。
  • colors[i] == 1 表示第 i 块瓷砖的颜色是 蓝色 。

环中连续 3 块瓷砖的颜色如果是 交替 颜色(也就是说中间瓷砖的颜色与它 左边 和 右边 的颜色都不同),那么它被称为一个 交替 组。

请你返回 交替 组的数目。

注意 ,由于 colors 表示一个  ,第一块 瓷砖和 最后一块 瓷砖是相邻的。

 

示例 1:

输入:colors = [1,1,1]

输出:0

解释:

示例 2:

输入:colors = [0,1,0,0,1]

输出:3

解释:

交替组包括:

 

提示:

  • 3 <= colors.length <= 100
  • 0 <= colors[i] <= 1

JavaScript 中的 `concat()` 方法详解

作者 _XU
2024年11月25日 23:51
在 JavaScript 中,数组和字符串都是常用的数据结构。在实际开发中,操作数组和字符串是非常频繁的任务。concat() 方法就是用于合并数组或字符串的一种常见方法。在本文中,我们将详细探讨

交替组 I

2024年11月13日 10:16

方法一:模拟

思路

按照题意遍历数组 $\textit{colors}$ 的每个元素,判断其前一个元素和后一个元素是否都与当前元素不同,如果满足,则将结果加 $1$。注意瓷砖是环形的,则数组的首尾元素是相邻的。最后返回结果。

代码

###Python

class Solution:
    def numberOfAlternatingGroups(self, colors: List[int]) -> int:
        n = len(colors)
        res = 0
        for i in range(n):
            if colors[i] != colors[i - 1] and colors[i] != colors[(i + 1) % n]:
                res += 1
        return res

###Java

class Solution {
    public int numberOfAlternatingGroups(int[] colors) {
        int n = colors.length;
        int res = 0;
        for (int i = 0; i < n; i++) {
            if (colors[i] != colors[(i - 1 + n) % n] && colors[i] != colors[(i + 1) % n]) {
                res += 1;
            }
        }
        return res;
    }
}

###C#

public class Solution {
    public int NumberOfAlternatingGroups(int[] colors) {
        int n = colors.Length;
        int res = 0;
        for (int i = 0; i < n; i++) {
            if (colors[i] != colors[(i - 1 + n) % n] && colors[i] != colors[(i + 1) % n]) {
                res += 1;
            }
        }
        return res;
    }
}

###C++

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] != colors[(i - 1 + n) % n] && colors[i] != colors[(i + 1) % n]) {
                res += 1;
            }
        }
        return res;
    }
};

###Go

func numberOfAlternatingGroups(colors []int) int {
    n := len(colors)
    res := 0
    for i := 0; i < n; i++ {
        if colors[i] != colors[(i-1+n)%n] && colors[i] != colors[(i+1)%n] {
            res++
        }
    }
    return res
}

###C

int numberOfAlternatingGroups(int* colors, int colorsSize) {
    int res = 0;
    for (size_t i = 0; i < colorsSize; i++) {
        if (colors[i] != colors[(i - 1 + colorsSize) % colorsSize] && colors[i] != colors[(i + 1) % colorsSize]) {
            res += 1;
        }
    }
    return res;
}

###JavaScript

var numberOfAlternatingGroups = function(colors) {
    const n = colors.length;
    let res = 0;
    for (let i = 0; i < n; i++) {
        if (colors[i] !== colors[(i - 1 + n) % n] && colors[i] !== colors[(i + 1) % n]) {
            res++;
        }
    }
    return res;
};

###TypeScript

function numberOfAlternatingGroups(colors: number[]): number {
    const n = colors.length;
    let res = 0;
    for (let i = 0; i < n; i++) {
        if (colors[i] !== colors[(i - 1 + n) % n] && colors[i] !== colors[(i + 1) % n]) {
            res++;
        }
    }
    return res;
};

###Rust

impl Solution {
    pub fn number_of_alternating_groups(colors: Vec<i32>) -> i32 {
        let n = colors.len();
        let mut res = 0;
        for i in 0..n {
            if colors[i] != colors[(i + n - 1) % n] && colors[i] != colors[(i + 1) % n] {
                res += 1;
            }
        }
        res
    }
}

复杂度分析

  • 时间复杂度:$O(n)$。

  • 空间复杂度:$O(1)$。

滑动窗口

作者 tsreaper
2024年7月7日 01:31

解法:滑动窗口

枚举组的开头,那么组中间的 $(k - 2)$ 个元素都需要满足“与两边的颜色不同”的条件。预处理哪些元素和两边的颜色不同,再用滑动窗口统计中间的 $(k - 2)$ 个元素中,有几个满足该条件即可。复杂度 $\mathcal{O}(n)$。

参考代码(c++)

###cpp

class Solution {
public:
    int numberOfAlternatingGroups(vector<int>& colors, int K) {
        int n = colors.size();
        // 预处理哪些元素与两边颜色不同
        int f[n];
        for (int i = 0; i < n; i++) {
            int x = colors[(i - 1 + n) % n];
            int y = colors[i];
            int z = colors[(i + 1) % n];
            if (x != y && y != z) f[i] = 1;
            else f[i] = 0;
        }

        // 滑动窗口
        int sm = 0;
        for (int i = 1; i + 1 < K; i++) sm += f[i];
        int ans = 0;
        for (int i = 0; i < n; i++) {
            if (sm == K - 2) ans++;
            sm -= f[(i + 1) % n];
            sm += f[(i + K - 1) % n];
        }
        return ans;
    }
};
昨天 — 2024年11月25日首页

氪星晚报|余承东官宣Mate70新功能;4500余家华为门店将在美团首销Mate70等新品;我国重型燃气轮机实现小型化新突破

2024年11月25日 22:19

大公司:

余承东官宣Mate70新功能

36氪获悉,华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东发文表示:“史上最强大的Mate解锁了新技能——AI隔空传送!”

三星将在捷克建造电动汽车电池工厂

36氪获悉,据报道,三星将在捷克建造电动汽车电池工厂

蔚来十周年李斌发内部全员信,要求团队聚焦提升基本经营单元的运营效率

36氪获悉,11月25日,在公司成立十周年之际,蔚来创始人李斌发布内部信,向团队提出了“保持初心、专注行动”的新要求。在内部信中,李斌要求团队持续加强自下而上的体系能力建设,聚焦提升基本经营单元的运营效率。“接下来两年是至关重要的两年,持续推出有竞争力的新产品,持续提升运营效率,明年实现销量翻番,2026年实现公司盈利,是不容有失的工作任务。”李斌表示。据了解,截至2024年11月25日,蔚来公司已累计交付新车超62万台。

欧洲汽车产业大裁员:5万员工面临失业,车企利润快速流失

据不完全统计,包括大众、奥迪、福特、Stellantis等4家车企以及4家零部件巨头在内的8家企业,将在欧洲累计裁员约5万人。在所统计的车企中,大众汽车是明确裁员人数最多的车企,公司此前表示将关闭至少三家德国本土工厂,并裁撤上万名员工,以应对利润下降的局面。而汽车零部件裁员幅度相比车企更为夸张,有两家企业裁员计划超1万人。其中博世集团决定要在德国裁员7000多人,汽车供应部门多达3200人。采埃孚此前宣布,预计将在2028年底前,将其德国员工人数削减1.1万至1.4万人

4500余家华为门店将在美团首销Mate70等新品

据华为终端官方消息,华为将于11月26日举行华为Mate品牌盛典,发布华为Mate70系列、Mate X6等新品。在销售渠道上,从相关方面获悉,与新品发布会同步,美团平台上全国各地4500余家华为授权体验店和华为智能生活馆将在同一时间首发新品,并将根据官方正式销售节奏,同步“外卖开售”。届时,全国各地消费者可外卖下单华为新机,最快30分钟从附近门店收到新品。这是华为首次在外卖平台同步首发销售Mate系列新品。

99大华超市与皓月食品达成战略合作

36氪获悉,近日,99大华超市(99 Ranch Market)与皓月食品在洛杉矶达成战略合作并正式签署协议,双方将全力推动中餐出海,助力中国餐饮品牌走向美国。据介绍,99大华在全美拥有69间超市和7个配送中心,旗下的供应链公司(Walong Marketing Inc.)已帮助“喜茶”等品牌完成全美的采购和配送服务。

永辉东北首家自主调改店开业三日累计销售达593.5万元

36氪获悉,11月22日,永辉超市东北首家“学习胖东来”自主调改店——沈阳沈北吾悦广场店正式恢复营业。截至11月25日,永辉沈阳沈北吾悦广场店开业3天,销售业绩达593.5万元;进店客流超15万人次,结算客流45704人。受此影响,门店所在的沈北吾悦广场三天客流达28.7万,同比增长接近3倍。据了解,调改后的永辉沈阳沈北吾悦广场店商品结构达到胖东来的90%,门店员工的最低工资从每月3400元提高至每月4500元,一线员工工资普遍增长,平均提升超30%。

百度萝卜快跑拟于香港地区试营运,运输署称会严格把关

据报道,百度旗下无人驾驶网约车平台“萝卜快跑”拟于香港地区试营运,最快今年底前在机场进行首阶段测试。香港特区政府运输署证实,百度上月已提交自动驾驶测试先导牌照及自动车证书的申请,仍审批中,署方会严格把关,有序和安全地推动自动车在香港测试。根据香港离岛区议会文件,首阶段测试年底前展开,会先在非繁忙时段进行,车上会有一名十年以上驾驶经验的本地司机,作后备操作员。

认养一头牛第十座奶牛牧场正式投运

36氪获悉,近日,认养一头牛位于吉林公主岭的第十座奶牛牧场——桑树台牧场正式投入运营,首批奶牛正陆续进场,设计存栏近20000头。据了解,此次投入运营的桑树台牧场,是认养一头牛在“供产销一体化”全产业链模式上的延续。截至目前,认养一头牛已在全国建成10座奶牛牧场,奶牛存栏数超10万头,奶源自给率超95%,上游奶源把控能力进一步提升。

亚马逊印度据悉寻求推出商务配送服务

据报道,多位知情人士表示,亚马逊印度公司正寻求在12月底或明年初推出快速商务递送服务。此事将在定于12月第一周的下一次月度审查中讨论。除了拥有一支核心员工团队外,该公司还将为这一高优先级项目招聘新员工。

新产品:

多次推迟后,马斯克称FSDV13版本将很快发布

特斯拉CEO埃隆·马斯克(Elon Musk)上周末表示,FSD软件的下一个重大更新将“很快到来”。与此同时,特斯拉在中国为Model Y车型提供了新的折扣,以进行年终大促销。早在9月份,特斯拉的 AI团队就在马斯克的X平台上发帖称,目标是在10月底发布FSD v13。10月下旬,该团队表示,他们的目标是在感恩节之前推出最新的FSD v13。当地时间周六晚间,马斯克在X上表示,FSD v13将“很快到来”,但没有透露具体细节。

比亚迪2025年将推出新一代刀片电池

11月25日,比亚迪欧洲汽车销售事业部中亚地区总经理曹爽在第二十九届联合国气候变化大会(COP29)期间接受采访时表示,2025年比亚迪计划推出新一代刀片电池,将提高汽车的续航里程,并延长电池本身的使用寿命。

投融资:

裕信银行对BPM银行发起收购要约

36氪获悉,据报道,裕信银行对BPM银行发起收购要约。

今日观点:

瑞银投资银行中国:对中国汽车品牌投资保持乐观

瑞银投资银行中国汽车行业研究主管巩旻今日表示,中国自主品牌目前占全球汽车市场份额约20%、占全球电动车市场份额约60%,但合计市值仅占全球车企的10%左右。“从长远看,我们对中国品牌的投资是偏乐观的。”巩旻表示。

其他值得关注的新闻:

十二部门:深化基于5G的编队行驶、远程驾驶等高级别自动驾驶应用场景

36氪获悉,工业和信息化部等十二部门印发《5G规模化应用“扬帆”行动升级方案》,推进5G智能交通信号控制等应用场景规模部署,深化基于5G的编队行驶、远程驾驶等高级别自动驾驶应用场景。加快5G技术与AGV、RGV等物流终端融合,探索低空航空器交通运输等5G创新应用服务场景。推动5G在港机远程控制、自动导引运输、集卡自动驾驶等场景中形成标准化解决方案,加速5G海港解决方案向河港、内陆场站、空港等场景复制推广。

我国重型燃气轮机实现小型化新突破

我国自主研发F级15兆瓦重型燃气轮机(代号G15)在四川德阳一次性点火成功,这标志着我国重型燃气轮机实现小型化新突破.

如何面对无法控制的丧失?

2024年11月25日 21:00

你正在为失去而痛苦,或者为将来可能发生的丧失而感到恐惧吗?可能是亲人的去世,朋友的离开,失去工作、财富等,面对无法控制的丧失,如何重归内心的平静?

下载虎嗅APP,第一时间获取深度独到的商业科技资讯,连接更多创新人群与线下活动

即日起,上海正式启动增值电信业务扩大对外开放试点

2024年11月25日 20:55
从上海市经济和信息化委员会、上海市通信管理局获悉,根据工业和信息化部批复上海市开展增值电信业务扩大对外开放试点工作的有关文件要求,正式在上海自由贸易试验区临港新片区及社会主义现代化建设引领区启动增值电信业务扩大对外开放试点工作。(澎湃)

赣锋锂业:看好未来长时储能市场 正准备布局大容量电池

2024年11月25日 20:38
36氪获悉,赣锋锂业在投资者关系活动中表示,目前储能市场发展势头良好,公司以储能为锂电业务发力点,享受行业高增长福利。公司储能电池的设计产能为30GWh,明年储能电池的产能利用率有待提升。作为公司锂电板块增速最快的业务,公司储能不止做电池,还延伸至中游的储能系统、储能电站建设,开发4C、5C的动力快充业务。公司看好未来长时储能市场,正准备布局大容量电池。公司主要以国内储能市场为主,少量出口业务。

十二部门:健全5G融合应用产业体系,研发推广基于5G技术的“小快轻准”数字化技术产品

2024年11月25日 20:37
36氪获悉,工业和信息化部等十二部门印发《5G规模化应用“扬帆”行动升级方案》,其中提到,健全5G融合应用产业体系。加速5G与行业融合产品落地,着力提升芯片/模组、融合终端/装备、行业虚拟专网、解决方案等关键环节低成本高质量供给能力,指导开展“5G Inside”(5G内置)等产业供需对接活动,研发推广基于5G技术的“小快轻准”数字化技术产品,持续丰富5G行业应用解决方案,打造5G应用关键共性能力平台,推进5G与行业内网、设备等融合改造及更新。

十二部门:探索5G行业虚拟专网在海洋、低空等新兴场景部署

2024年11月25日 20:36
36氪获悉,工业和信息化部等十二部门印发《5G规模化应用“扬帆”行动升级方案》,大力推进5G行业虚拟专网在工业、能源、医疗、教育等领域规模部署,带动云平台、边缘计算节点、智算基础设施等建设,充分发挥公网切片、网元下沉等技术能力,增强定制化服务水平,满足行业低成本、高安全应用需求。探索5G行业虚拟专网在海洋、低空等新兴场景部署。扩大5G RedCap、5G LAN、定位增强、无源物联、通感一体等技术应用,推动5G行业虚拟专网与NB-IoT、4G、IPv6等协同应用。
❌
❌