第 113 场 LeetCode 双周赛题解

A 使数组成为递增数组的最少右移次数

在这里插入图片描述

数据范围小直接模拟…

class Solution {
public:int minimumRightShifts(vector<int> &nums) {for (int op = 0; op < nums.size(); op++) {if (is_sorted(nums.begin(), nums.end()))//nums是否已经有序return op;rotate(nums.begin(), prev(nums.end()), nums.end());//右移一次}return -1;}
};

B 删除数对后的最小数组长度

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

分类讨论:设数组中出现次数最多的数的出现次数为 m x mx mx

  1. 当数组长度为偶数时:若 m x ≤ n 2 mx \le \frac n 2 mx2n 则删除数对后的最小数组长度为 0 0 0 ,否则删除数对后的最小数组长度为 m x − ( n − m x ) mx - (n - mx) mx(nmx)
  2. 当数组长度为偶数时:若 m x ≤ ⌊ n 2 ⌋ mx \le \left \lfloor \frac n 2 \right \rfloor mx2n 则删除数对后的最小数组长度为 1 1 1 ,否则删除数对后的最小数组长度为 m x − ( n − m x ) mx - (n - mx) mx(nmx)
class Solution {
public:int minLengthAfterRemovals(vector<int> &nums) {unordered_map<int, int> cnt;//统计出现次数for (auto x: nums)cnt[x]++;int mx = 0;for (auto &[_, cnt_i]: cnt)mx = max(mx, cnt_i);int n = nums.size();if (n % 2 == 0) return mx <= n / 2 ? 0 : mx - (n - mx);        return mx <= n / 2 ? 1 : mx - (n - mx);}
};

C 统计距离为 k 的点对

计数+枚举:枚举数组的坐标 ( p [ 0 ] , p [ 1 ] ) (p[0],p[1]) (p[0],p[1]) ,枚举可能的与当前坐标距离为 k k k 的坐标:枚举 0 ≤ i ≤ k 0 \le i \le k 0ik ( p [ 0 ] ∧ i , p [ 1 ] ∧ ( k − i ) ) (p[0]\wedge i, p[1]\wedge (k-i)) (p[0]i,p[1](ki)) 即为与当前坐标距离为 k k k 的坐标,若之前出现过这个坐标则更新答案,在枚举坐标 ( x , y ) (x,y) (x,y) 的过程中记录坐标的出现次数。

class Solution {
public:int countPairs(vector<vector<int>> &coordinates, int k) {map<pair<int, int>, int> cnt;//记录坐标的出现次数int res = 0;for (auto &p: coordinates) {for (int i = 0; i <= k; i++) {int x = p[0] ^ i;int y = p[1] ^ (k - i);auto tmp = make_pair(x, y);auto it = cnt.find(tmp);if (it != cnt.end())//之前出现过坐标(x,y)res += it->second;}cnt[{p[0], p[1]}]++;}return res;}
};

D 可以到达每一个节点的最少边反转次数

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

动态规划:首先建无向图,同时记录原始边的方向。不妨设 0 0 0 为树根,设 p [ c u r ] p[cur] p[cur] 为:使 c u r cur cur 能够到达以 c u r cur cur 为根的子树中的所有节点的最少边反转次数。通过 d f s dfs dfs 可以求出 p p p 数组。然后从 0 0 0 开始遍历树中节点 c u r cur cur,遍历过程中维护使 c u r cur cur 能够到达除以 c u r cur cur 为根的子树外的所有节点的最少边反转次数 u p _ c o s t up\_cost up_cost,则使 c u r cur cur 能够到达所有节点的最少边反转次数有 r e s [ c u r ] = p [ c u r ] + u p _ c o s t res[cur]=p[cur]+up\_cost res[cur]=p[cur]+up_cost

class Solution {
public:vector<int> minEdgeReversals(int n, vector<vector<int>> &edges) {vector<pair<int, int>> e[n];for (auto &ei: edges) {e[ei[0]].emplace_back(ei[1], 0);//0代表正向边e[ei[1]].emplace_back(ei[0], 1);//1代表反向边}int p[n];function<int(int, int)> dfs = [&](int cur, int par) {p[cur] = 0;for (auto &[j, w]: e[cur])if (j != par) {if (w == 1)//(cur,j)这条边需要反转p[cur]++;p[cur] += dfs(j, cur);}return p[cur];};dfs(0, -1);//求p数组vector<int> res(n);function<void(int, int, int)> get = [&](int cur, int par, int up_cost) {res[cur] = p[cur] + up_cost;for (auto &[j, w]: e[cur])if (j != par) {if (w == 0)get(j, cur, res[cur] - p[j] + 1);elseget(j, cur, res[cur] - p[j] - 1);}};get(0, -1, 0);//求答案数组return res;}
};

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

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

相关文章

Hive参数与性能调优-V2.0

Hive作为大数据平台举足轻重的框架&#xff0c;以其稳定性和简单易用性也成为当前构建企业级数据仓库时使用最多的框架之一。 但是如果我们只局限于会使用Hive&#xff0c;而不考虑性能问题&#xff0c;就难搭建出一个完美的数仓&#xff0c;所以Hive性能调优是我们大数据从业…

开源库源码分析:OkHttp源码分析(二)

开源库源码分析&#xff1a;OkHttp源码分析&#xff08;二&#xff09; 导言 上一篇文章中我们已经分析到了OkHttp对于网络请求采取了责任链模式&#xff0c;所谓责任链模式就是有多个对象都有机会处理请求&#xff0c;从而避免请求发送者和接收者之间的紧密耦合关系。这篇文章…

vue学习之element-ui组件集成

1. element-ui 链接 https://element.eleme.cn/#/zh-CN 2. element-ui 安装 cnpm install element-ui3. 创建项目 https://blog.csdn.net/qq_36940806/article/details/132921688?spm=1001.2014.3001.5502 4. 引入element库 /src/main.js 引入 element-uiimport Vue from…

基于SSM+Vue的汽车售票网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Java————栈

一 、栈 Stack继承了Vector&#xff0c;Vector和ArrayList类似&#xff0c;都是动态的顺序表&#xff0c;不同的是Vector是线程安全的。 是一种特殊的线性表&#xff0c; 其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另…

【数据结构】ArrayList和顺序表

文章目录 1.线性表2.顺序表2.1 接口的实现 3. ArrayList简介4. ArrayList使用4.1 ArrayList的构造4.2 ArrayList常见操作4.3 ArrayList的遍历4.4 ArrayList的扩容机制 5. ArrayList的具体使用5.1 简单的洗牌算法5.2 杨辉三角 6. ArrayList的问题及思考 1.线性表 线性表&#x…

Angular变更检测机制

前段时间遇到这样一个 bug&#xff0c;通过一个 click 事件跳转到一个新页面&#xff0c;新页面迟迟不加载&#xff1b; 经过多次测试发现&#xff0c;将鼠标移入某个 tab &#xff0c;页面就加载出来了。 举个例子&#xff0c;页面内容无法加载&#xff0c;但是将鼠标移入下图…

C语言编程题(二)运算符与位运算符优先级

#include <stdio.h>int main() { unsigned char a0xa5; unsigned char b~a>>41; printf("b%d",b); return 0;} 错误思路&#xff1a; unsigned char占一个字节&#xff0c;即8bit&#xff0c;将a写入内存中的形式为&#xff1a; 1010 0101 按照常规来…

Matlab之并行程序设计实战教程

在本教程中&#xff0c;我们将介绍如何使用Matlab进行并行程序设计。我们将通过一个简单的示例来演示如何将串行代码转换为并行代码&#xff0c;以提高程序的执行效率。 示例&#xff1a;计算一个数组的平方和 假设我们有一个包含10000个元素的数组&#xff0c;我们想计算该数…

OkHttp 根据服务器返回的的过期时间设置缓存

据返回的缓存时间来缓存响应&#xff0c;可以通过使用OkHttp的CacheControl和ResponseCacheInterceptor来实现。以下是一个示例代码&#xff1a; // 创建缓存目录和缓存对象 File cacheDirectory new File(context.getCacheDir(), "http-cache"); int cacheSize 1…

[运维|数据库] 在 PostgreSQL 中使用正则表达式进行模式匹配

以下是如何在 PostgreSQL 中使用正则表达式进行模式匹配&#xff1a; SELECT column_name FROM your_table WHERE column_name ~ your_pattern;在上面的查询中&#xff1a; column_name 是您要搜索的列名。 your_table 是包含数据的表名。 ‘your_pattern’ 是您的正则表达式…

【面试刷题】——堆栈窗口

“堆栈窗口”&#xff08;Stack Window&#xff09;通常不是一个特定的编程术语&#xff0c;但可以用来描述在编程和计算机科学领域中一些相关的概念。这些概念涉及到堆栈&#xff08;stack&#xff09;和窗口&#xff08;window&#xff09;等术语的组合。以下是一些可能涉及到…

JVM——3.StringTable字符串常量池

这篇文章我们来讲一下StringTable字符串常量池 目录 1.引例 2.StringTable的特性 3.StringTable的位置 4.StringTable的垃圾回收、 5.StringTable性能调优 6.总结 1.引例 首先&#xff0c;我们来看下面的这段程序&#xff0c;请思考最终的输出结果。 输出结果&#xff…

Multitor:一款带有负载均衡功能的多Tor实例创建工具

关于Multitor Multitor是一款带有负载均衡功能的多Tor实例创建工具&#xff0c;Multitor的主要目的是以最快的速度完成大量Tor进程的初始化&#xff0c;并将大量实例应用到我们日常使用的程序中&#xff0c;例如Web浏览器和聊天工具等等。除此之外&#xff0c;在该工具的帮助下…

常用设计模式总结 + 实例

工厂模式 工厂函数通常是指一个函数&#xff0c;它用来创建和返回其他函数或对象的实例。 人话&#xff1a; 当new Class 或 Function 时&#xff0c;根据传入的参数&#xff0c;而返回不同的值&#xff0c;这就是工厂模式。 &#xff08;所以可以说&#xff0c;这是我们开…

vscode如何设置文件折叠

随着项目的不断迭代开发&#xff0c;复杂度越来越高&#xff0c;配置文件越来越多&#xff0c;导致vscode左侧文件列表展示非常不直观&#xff0c;幸好可以通过文件折叠来简化展示效果&#xff0c;把同类相关的文件折叠在一块展示&#xff0c;方便查看配置文件。配置好后的效果…

React 开发一个移动端项目(2)

配置基础路由 目标&#xff1a;配置登录页面的路由并显示在页面中 步骤&#xff1a; 安装路由&#xff1a; yarn add react-router-dom5.3.0 5 和 6 两个版本对组件类型的兼容性和函数组件支持有所改变&#xff0c;在这里使用的是 5。 和路由的类型声明文件 yarn add types…

VTK 基础入门 ( 一 ) 相机设置

/** 相机 SetClippingRange()/SetFocalPoint() / SetPosition()分别用于设置相机的前后裁剪平面、焦点和位置。 ComputeViewPlaneNormal()方法是根据设置的相机位置、焦点等信息&#xff0c;重新计算视平面 (View Plane)的法向量。 一般该法向量与视平面是垂直…

基于 kubernetes+docker构建高可用、高性能的 web 、CICD集群

文章目录 一、项目架构图二 、项目描述三、项目环境四、环境准备1、IP地址规划2、关闭selinux和firewall3、配置静态ip地址4、修改主机名5、升级系统&#xff08;可做可不做&#xff09;6、添加hosts解析 五、项目步骤1、设计整个集群的架构&#xff0c;规划好服务器的IP地址&a…

Postgresql中检测内存越界或use after free的简便方法

1 使用场景 在Postgresql的内存管理模块中&#xff0c;最常用的aset.c提供的内存池实现&#xff0c;该实现提供了两个非常实用的开关来解决常见的内存越界问题&#xff1a; memdebug.c * About CLOBBER_FREED_MEMORY:** If this symbol is defined, all freed memory is over…