LeetCode 第 344 场周赛

news2024/9/25 7:13:07

在这里插入图片描述

相当的惨烈,乱交

Q1

前后缀分解,用set统计不同元素的个数

class Solution {
   public:
    vector<int> distinctDifferenceArray(vector<int>& nums) {
        int n = nums.size();
        vector<int> L(n + 1, 0), R(n + 1, 0);  // 前缀不同数的个数
        set<int> s;
        for (int i = 0; i < n; i++) {
            s.insert(nums[i]);
            L[i] = s.size();
        }
        s.clear();
        for (int i = n - 1; i >= 0; i--) {
            s.insert(nums[i]);
            R[i] = s.size();
        }
        vector<int> ans(n);
        for (int i = 0; i < n; i++) {
            ans[i] = L[i] - R[i + 1];
        }
        return ans;
    }
};

Q2

用两个哈希表来计数。

遍历会超时,所以得另开一个哈希表统计出现的次数,但是更新时要同时更新次数。

用数组桶计数也可以因为数据小。

class FrequencyTracker {
   public:
    unordered_map<int, int> mp;
    unordered_map<int, int> count;
    FrequencyTracker() {
        mp.clear();
    }

    void add(int number) {
        if(mp[number] > 0)
            count[mp[number]]--;
        mp[number]++;
        count[mp[number]]++;
    }

    void deleteOne(int number) {
        if (mp[number] != 0){
            count[mp[number]]--;
            mp[number]--;
            count[mp[number]]++;
        }
    }

    bool hasFrequency(int frequency) {
        return count[frequency] > 0;
    }
};

Q3

贪心,考虑修改颜色之后,答案的增减情况,相邻有两种情况

  1. 原来就已经相等
    • 修改后还是相等,那么答案不变
    • 修改后判断前后是否改变,改变答案-1
  2. 原来不相等,修改后相等
    • 如果和前面相等答案+1
    • 如果和后面相等答案+1
class Solution {
   public:
    vector<int> colorTheArray(int n, vector<vector<int>>& queries) {
        vector<int> color(n, 0);
        vector<int> ans(queries.size(), 0);
        ans[0] = 0;
        color[queries[0][0]] = queries[0][1];
        for (int i = 1; i < queries.size(); i++) {
            int index = queries[i][0], c = queries[i][1];
            if (c == color[index]) { // 改不改都一样
                ans[i] = ans[i - 1];
                continue;
            }
            // 修改前相邻的相等
            int cur = color[index];
            if (index > 0 && color[index - 1] == cur && color[index - 1] != 0) {
                ans[i] -= 1;
            }
            if (index + 1 < n && color[index + 1] == cur && color[index + 1] != 0) {
                ans[i] -= 1;
            }
            color[index] = c;
            // 修改后相邻的相等
            if (index > 0 && color[index - 1] == c && color[index - 1] != 0) {
                ans[i] += 1;
            } 
            if (index + 1 < n && color[index + 1] == c && color[index + 1] != 0) {
                ans[i] += 1;
            }
            ans[i] += ans[i - 1];
        }
        return ans;
    }
};

Q4

要使得根节点到叶子节点路径都相等,那么每一个父节点到叶节点的路径也相等,那么就是把左右子节点的值改成一样,修改次数就是两子节点的差值。

class Solution {
   public:
    int sum = 0;  // 求每个父节点左右子节点abs差值的和,父节点的值为左右子节点的最大值+cost[u]
    int dfs(int u, vector<int>& cost) {
        if (u >= cost.size()) return 0;
        int l = dfs(2 * u + 1, cost);
        int r = dfs(2 * u + 2, cost);
        sum += abs(l - r);
        cost[u] += max(l, r);  
        return cost[u];
    }
    int minIncrements(int n, vector<int>& cost) {
        dfs(0, cost);
        return sum;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/498068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MLC LLM - 大模型本地部署解决方案

MLC LLM 是一种通用解决方案&#xff0c;它允许将任何语言模型本地部署在各种硬件后端和本地应用程序上&#xff0c;此外还提供了一个高效的框架&#xff0c;供每个人根据自己的用例进一步优化模型性能。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 我们的使命是让…

【Python】使用Print函数制作旋转的动画

1. 引言 如果你想有效地学习Python&#xff0c;这篇文章可能不适合你。接下来的一切都可能是愚蠢、和浪费时间&#xff0c;但哪有怎么样&#xff0c;毕竟这玩意很有趣呀&#xff01; 2. 好玩的脚本 首先&#xff0c;我们来看两个好玩的Python脚本&#xff0c;如下&#xff1…

开关电源基础03:正激和反激开关电源拓扑(3)-反激拓扑

说在开头&#xff1a;关于不确定性原理 1927年2月&#xff0c;那个冬天对海森堡来说简直是一场噩梦&#xff0c;越来越多的人转向了薛定谔和他那该死的波动理论&#xff0c;把他的矩阵忘得一干二净&#xff1b;而最让他伤心和委屈的是&#xff0c;玻尔也转向了他的对立面&…

大规模并行处理架构Doris编译部署篇

目录 1 Doris编译1.1 使用 Docker 开发镜像编译&#xff08;推荐&#xff09;1.1.1 遇到的问题1.1.1 遇到的问题 1.2 直接编译&#xff08;CentOS/Ubuntu&#xff09;1.2.1 环境准备1.2.2 系统依赖&#xff08;一次性安装&#xff09;1.2.3 手动安装系统依赖1.2.3.1 CMake 3.11…

Linux驱动开发:SPI子系统

1、SPI简介 1.1 四根线 MISO&#xff1a;主设备数据输入&#xff0c;从设备数据输出。 MOSI&#xff1a;主设备数据输出&#xff0c;从设备数据输入。 SCLK&#xff1a;时钟信号&#xff0c;由主设备产生。 CS&#xff1a; 从设备片选信号&#xff0c;由主设备控制。 1.2…

《string类的使用介绍》

本文主要介绍string的常见的接口的使用 文章目录 一、什么是string类二、string类的使用1、string类对象的常见构造2、string类对象的容量操作3、string类对象的访问及遍历操作①operator[ ]的用法②迭代器③范围for 4、string类对象的修改操作①push_back②append③operator&a…

刷题笔记8| 344.反转字符串, 541. 反转字符串II, 剑指Offer 05.替换空格

344.反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 输入&#xff1a;s ["h","e",…

索引—MySQL

文章目录 1.定义以及相关知识1.1定义1.2数据库保存数据的基本单位 2.MySQL中索引分类2.1B树和B树2.2主键索引&#xff08;聚簇索引&#xff09;2.3非聚簇索引2.4覆盖索引2.5复合索引&#xff08;联合索引&#xff09;2.6基于B树的索引2.7hash索引 1.定义以及相关知识 1.1定义 …

okio篇--总览

看源码第一步&#xff0c;先去看看官网对okio的介绍&#xff1a; Okio 首先第一段&#xff1a; okio对bytes&#xff0c;做了两种形式的封装&#xff1a;ByteString和Buffer。 其中ByteString&#xff0c;是针对字符类的数据&#xff0c;内部封装一个byte数组&#xff0c;封…

网络协议与攻击模拟-06-ICMP重定向

■0网络不可达 ■2协议不可达 类型4源抑制 类型5重定向 2、 ICMP 常见的报文 响应请求 使用 ping 请求&#xff08; type 0)响应&#xff08; type 8) 目标不可达 type 3 源抑制 源抑制则充当一个控制流量的角色&#xff0c;它通知主机减少数据报流量&#xff0c;由于 I…

Django初识

1、简介 Django&#xff0c;是用python语言写的开源web开发框架&#xff0c;并遵循MVC设计。劳伦斯出版集团为了开发以新闻内容为主的网站&#xff0c;而开发出来了这个框架&#xff0c;于2005年7月在BSD许可证下发布。这个名称来源于比利时的爵士音乐家DjangoReinhardt&#…

操作系统第二章——进程与线程(中)

和光同尘&#xff0c;与时舒卷 文章目录 2.2.1 调度的概念&#xff0c;层次知识总览调度的基本概念高级调度低级调度中级调度三层调度的联系&#xff0c;对比进程的挂起态和七状态模型知识回顾 2.2.2 进程调度的时机&#xff0c;切换与过程&#xff0c;方式知识总览进程调度的时…

【C++】第二站:类和对象(中)拷贝构造函数

文章目录 一、拷贝构造函数的概念二、拷贝构造函数的特性三、深度剖析拷贝构造函数不采用引用会无限递归的原因1.C对于传参的两个规定2.如何解开这个无穷递归 四、拷贝构造函数的其他特性五、拷贝构造的一些使用场景 一、拷贝构造函数的概念 拷贝构造函数&#xff1a;只有单个形…

2.2 Linux控制台访问CLI

系列文章目录 第1章 Linux Shell简介 第2章 Shell基础 <本章所在位置> 第3章 Bash Shell基础命令 第4章 Bash Shell命令进阶 第5章 Linux Shell深度理解 第6章 Linux环境变量 第7章 Linux文件权限 第8章 Linux文件系统的管理 第9章 Linux软件安装 第10章 Linux文本编辑器…

【MySQL】搭建出高可用性、高性能的MySQL集群要考虑的事是蛮多的,你看看会不会?

MySQL 架构设计数据同步负载均衡安全性监控和维护注意的点1. 确定节点数量和配置2. 选择合适的硬件和网络设备3. 避免单点故障4. 定期备份和恢复测试5. 定期更新和升级 Java工程师使用集群步骤最后 MySQL集群是一种高可用性、高性能的数据库解决方案&#xff0c;它可以通过多个…

基于Django实现的TMS物流管理系统(附源码下载)

基于Django实现的物流管理系统&#xff08;TMS&#xff0c;Transportation Management System&#xff09; 特点 前端基于Bootstrap 4框架和AdminLTE框架。使用MySQL作为数据库后端。实现了运单录入、发车出库、到货签收、客户签收等基本功能。拥有较为完善的报表功能和财务管…

Java—JDK8新特性—Lambda表达式【内含思维导图】

目录 JDK8新特性 2.Lambda表达式 思维导图 2.1 什么是Lambda表达式 2.2 为什么使用Lamdba表达式 2.3 Lambda表达式基本语法 2.4 类型推断 2.5 Lambda练习 2.6 Lambda常用场景 JDK8新特性 官网提供网址&#xff1a;JDK 8 Features 2.Lambda表达式 思维导图 2.1 什么是…

浅谈Dom和Bom(清晰易懂版)

DOM&#xff08;文档对象模型&#xff09; DOM 是浏览器提供的一种操作网页内容和结构的 API&#xff0c;它将 Web 页面表示为一个树形结构&#xff0c;其中每一个 HTML 元素都是一个节点&#xff0c;可以通过 DOM API 对其进行访问和操作。DOM API 包括了一系列方法和属性&am…

Shapes布局-文字环绕动画

文章目录 说明实现以及语法动画渐变裁切图形变换的动画效果 说明 Shapes也有形状、图形的意思&#xff0c;我们可以在页面中创建图形&#xff0c;并让内容环绕在定义的图形边上。 Shapes的官方文档&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Shapes/F…

YOLOv8 来了,快速上手实操

目录 YOLOv8的优点安装ultralytics使用YOLOv8n在图像上进行PredictTasks与 ModesModes - 模式分类Tasks - 任务分类 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;程序员半夏 , 一名全栈程序员&#xff0c;擅长使用各种编程语言和框架&#xff0c;如JavaScript、React、N…