第 387 场 LeetCode 周赛题解

news2024/12/23 17:08:17

A 3069. 将元素分配到两个数组中 I

在这里插入图片描述
在这里插入图片描述

模拟

class Solution {
public:
    vector<int> resultArray(vector<int> &nums) {
        vector<int> r1{nums[0]}, r2{nums[1]};
        for (int i = 2; i < nums.size(); i++) {
            if (r1.back() > r2.back())
                r1.push_back(nums[i]);
            else
                r2.push_back(nums[i]);
        }
        for (auto x: r2)
            r1.push_back(x);
        return r1;
    }
};

B 元素和小于等于 k 的子矩阵的数目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

前缀和:先计算二维前缀和,再枚举包含左上角元素的子矩阵

class Solution {
public:
    int countSubmatrices(vector<vector<int>> &grid, int k) {
        int m = grid.size(), n = grid[0].size();
        for (int i = 0; i < m; i++)
            for (int j = 1; j < n; j++)
                grid[i][j] += grid[i][j - 1];
        for (int j = 0; j < n; j++)
            for (int i = 1; i < m; i++)
                grid[i][j] += grid[i - 1][j];
        int res = 0;
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                if (grid[i][j] <= k)
                    res++;
        return res;
    }
};

C 在矩阵上写出字母 Y 所需的最少操作次数

在这里插入图片描述
在这里插入图片描述

枚举:枚举属于 Y 和不属于 Y 的单元格的颜色

class Solution {
public:
    int minimumOperationsToWriteY(vector<vector<int>> &grid) {
        int n = grid.size();
        int res = INT32_MAX;
        for (int cy = 0; cy <= 2; cy++)//属于Y的单元格的颜色
            for (int cny = 0; cny <= 2; cny++)//不属于Y的单元格的颜色
                if (cy != cny) {
                    int t = 0;
                    for (int i = 0; i < n; i++)
                        for (int j = 0; j < n; j++)
                            if (i <= n / 2 && (i == j || i + j == n - 1) || i > n / 2 && j == n / 2)//属于Y的单元格
                                t += grid[i][j] != cy ? 1 : 0;
                            else
                                t += grid[i][j] != cny ? 1 : 0;
                    res = min(res, t);
                }
        return res;
    }
};

D 将元素分配到两个数组中 II

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

离散化 + 树状数组:先将 nums 离散化,然后利用树状数组来维护两个数组,并查询数组中严格大于某个数的元素数量

class Solution {
public:
    vector<int> resultArray(vector<int> &nums) {
        vector<int> li = nums, o = li;
        sort(o.begin(), o.end());
        o.erase(unique(o.begin(), o.end()), o.end());
        for (auto &i: li)//li为nums离散化后的数组
            i = lower_bound(o.begin(), o.end(), i) - o.begin() + 1;
        int n = nums.size();
        int m = li.size();
        vector<int> r1{nums[0]}, r2{nums[1]};
        BinaryIndexedTree t1(m), t2(m);//两个树状数组
        t1.add(li[0], 1);
        t2.add(li[1], 1);
        for (int i = 2; i < n; i++) {
            int c1 = t1.query(m) - t1.query(li[i]);
            int c2 = t2.query(m) - t2.query(li[i]);
            if (c1 > c2) {
                r1.push_back(nums[i]);
                t1.add(li[i], 1);
            } else if (c1 < c2) {
                r2.push_back(nums[i]);
                t2.add(li[i], 1);
            } else {
                if (r1.size() <= r2.size()) {
                    r1.push_back(nums[i]);
                    t1.add(li[i], 1);
                } else {
                    r2.push_back(nums[i]);
                    t2.add(li[i], 1);
                }
            }
        }
        for (auto x: r2)
            r1.push_back(x);
        return r1;
    }

    class BinaryIndexedTree {//树状数组模板
    public:
        int N;
        vector<int> a;

        BinaryIndexedTree(int n) {
            N = n;
            a = vector<int>(N + 1);
        }

        inline int lowbit(int x) {
            return x & -x;
        }

        void add(int loc, int val) {// li[loc]+=val;
            for (; loc <= N; loc += lowbit(loc))
                a[loc] += val;
        }

        int query(int loc) {// sum{li[k] | 1<=k<=loc}
            int res = 0;
            for (; loc > 0; loc -= lowbit(loc))
                res += a[loc];
            return res;
        }
    };
};

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

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

相关文章

04. Nginx入门-Nginx WEB模块

测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径&#xff1a;/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…

使用html网页播放多个视频的几种方法

前言 因为项目测试需要&#xff0c;我需要可以快速知道自己推流的多路视频流质量&#xff0c;于是我想到可以使用html网页来播放视频&#xff0c;实现效果极其简单&#xff0c;方法有好几种&#xff0c;以下是几种记录&#xff1a; 注意&#xff1a;测试过&#xff0c;VLC需要使…

97 spring 中的泛型类型注入

前言 呵呵 同样是 最近同事碰到的一个问题 他不太懂 英语, 看到的说明是 缺少一个 RedisTemplate 的实例, 但是找到了一个 RedisTemplate 的实例 呵呵 和我这里 spring 版本似乎是不太一样, 错误信息 有一些差异 以下环境基于 jdk8 spring-5.0.4-RELEASE 测试用例 BeanCon…

23种设计模式——工厂方法模式

定义&#xff1a; 一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其他子类。 工厂方法通用类图&#xff1a; 这个图更好理解 在工厂方法模式中&#xff0c;抽象产品类Product负责定义产品的共性&#xff0c;实现对事物最抽象的…

人大金仓KingbaseES:银河麒麟V10安装

人大金仓KingbaseES&#xff1a;银河麒麟V10安装 众所周知的原因&#xff0c;为了响应国家信创支持国产操作系统和数据库&#xff0c;现在我们公司的项目要从开源数据库PostgreSQL切换到人大金仓KingbaseES数据库&#xff08;本质是早期版本的PostgreSQL&#xff09;。使用的是…

自适应控制算法讲解-案例(附C代码)

目录 一、自适应控制算法的基本原理 二、自适应控制算法分类 三、案例 3.1自适应PID控制 1&#xff09; 模型识别 2&#xff09;动态调整PID参数逻辑 3&#xff09;PID控制器 自适应控制算法是一种高级控制算法&#xff0c;用于处理那些参数不确定或者动态变化的系统。这类…

Elasticsearch:向量相似度计算 - 可笑的速度

作者&#xff1a;Chris Hegarty 任何向量数据库的核心都是距离函数&#xff0c;它确定两个向量的接近程度。 这些距离函数在索引和搜索期间执行多次。 当合并段或在图表中导航最近邻居时&#xff0c;大部分执行时间都花在比较向量的相似性上。 对这些距离函数进行微观优化是值…

AI-数学-高中-34概率-古典概率模型

原作者视频&#xff1a;【概率】【一数辞典】3古典概型_哔哩哔哩_bilibili 等可能性&#xff1a;每个样本点出现的可能性是相同的。 随机事件A的发生事件A的样本点数k / 样板空间总样本点数n。 示例1&#xff1a; 示例2&#xff1a;

[DevOps云实践] IaaC:通过CloudWatch Agent和自定义Metric监视服务器

[DevOps云实践] IaaC:通过CloudWatch Agent和自定义Metric监视服务器 现在有许多第三方工具可以用于监控EC2实例。尽管事实如此,我想为您提供使用AWS原生资源和工具(如AWS CloudWatch、CloudWatch Agent和CloudFormation)快速设置EC2监控所需的所有信息。 首先,您应该知…

2024.3.4

思维导图 作业1&#xff1a;广播 发送端&#xff1a; #include<myhead.h> int main(int argc, const char *argv[]) {//创建套接字int sfd socket(AF_INET,SOCK_DGRAM,0);if(sfd -1){perror("sockeet error");return -1;}//设置当前套接字允许广播属性int …

idea中引入新JDK环境

在不同的项目中往往会需要不同的运行环境&#xff0c;那么如何下载一个新的环境并运用到idea中呢&#xff1f; 下面给出的就是oracle官网&#xff0c;以JDK17为例教大家如何下载 Java Archive Downloads - GraalVM for JDK 17https://www.oracle.com/java/technologies/javase…

End-to-End Weakly-Supervised SemanticSegmentation with Transformers

摘要 弱监督语义分割&#xff08;WSSS&#xff09;使用图像级标签是一项重要且具有挑战性的任务。由于高训练效率&#xff0c;端到端的WSSS解决方案受到社区越来越多的关注。然而&#xff0c;当前的方法主要基于卷积神经网络&#xff0c;并未正确地探索全局信息&#xff0c;因…

在Visual Studio配置C++的netCDF库的方法

本文介绍在Windows电脑的Visual Studio软件中&#xff0c;配置C 语言最新版netCDF库的方法。 netCDF&#xff08;Network Common Data Form&#xff09;是一种用于存储、访问和共享科学数据的文件格式和库&#xff0c;其提供了一种灵活的方式来组织、描述和存储多维数据&#x…

【系统架构设计师考试大纲】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱考试目标考试要求考试题目题型分析计算机基础知识&#xff08;20%&#xff09;信息化战略与规划&#xff08;9%&#xff09;软件工程&#xff08;25%&#xff09;系统架构设计&#xff08;35%&#xff09;信…

适用于 Windows 的7大数据恢复软件解决方案

数据丢失是数字世界中令人不快的一部分&#xff0c;它会在某一时刻影响许多计算机用户。很容易意外删除一些重要文件&#xff0c;这可能会在您努力恢复它们时带来不必要的压力。幸运的是&#xff0c;数据恢复软件可以帮助恢复已删除的文件&#xff0c;即使您没有备份它们。以下…

AI大模型与小模型之间的“脱胎”与“反哺”(第三篇)

51. **异构图神经网络集成&#xff08;Heterogeneous Graph Neural Network Integration&#xff09;**&#xff1a; 构建异构图神经网络来捕获和整合各行业间复杂的实体关系及属性信息。每个行业的小模型可视为一个子图&#xff0c;将它们整合进一个统一的大图模型中&#xff…

力扣206反转链表

206.反转链表 力扣题目链接(opens new window) 题意&#xff1a;反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 1&#xff0c;双指针 2&#xff0c;递归。递归参考双指针更容易写&#xff0c; 为什么不用头插…

学习JAVA的第十三天(基础)

目录 API之Arrays 将数组变成字符串 二分查找法查找元素 拷贝数组 填充数组 排序数组 Lambda表达式 集合的进阶 单列集合 体系结构 Collection API之Arrays 操作数组的工具类 将数组变成字符串 //将数组变成字符串char[] arr {a,b,c,d,e};System.out.println(Arra…

Linux-信号3_sigaction、volatile与SIGCHLD

文章目录 前言一、sigaction__sighandler_t sa_handler;__sigset_t sa_mask; 二、volatile关键字三、SIGCHLD方法一方法二 前言 本章内容主要对之前的内容做一些补充。 一、sigaction #include <signal.h> int sigaction(int signum, const struct sigaction *act,struc…

计数排序详解(附源码)

目录 思想&#xff1a; 源码&#xff1a; 思想&#xff1a; 计数排序&#xff1a;用一个数组记录按原始数据中&#xff0c;每个数据出现的次数 非常牛批的思路&#xff0c;没有用到比较 直接对每个数据进行计数 然后从计数的数组中&#xff0c;往回覆盖数据 从左到右&#xf…