力扣第 119 场双周赛(Java)

文章目录

    • T1 找到两个数组中的公共元素
      • 代码解释
    • T2 消除相邻近似相等字符
      • 代码解释
    • T3 最多 K 个重复元素的最长子数组
      • 代码解释
    • T4 关闭分部的可行集合数目
      • 代码解释

链接:第 119 场双周赛 - 力扣(LeetCode)

T1 找到两个数组中的公共元素

给你两个下标从 0 开始的整数数组 nums1nums2 ,它们分别含有 nm 个元素。

请你计算以下两个数值:

统计 0 <= i < n 中的下标 i ,满足 nums1[i]nums2 中 至少 出现了一次。
统计 0 <= i < m 中的下标 i ,满足 nums2[i]nums1 中 至少 出现了一次。
请你返回一个长度为 2 的整数数组 answer ,按顺序 分别为以上两个数值。

示例 :

输入:nums1 = [4,3,2,3,1], nums2 = [2,2,5,2,3,6]
输出:[3,4]
解释:分别计算两个数值:

  • nums1 中下标为 1 ,2 和 3 的元素在 nums2 中至少出现了一次,所以第一个值为 3 。
  • nums2 中下标为 0 ,1 ,3 和 4 的元素在 nums1 中至少出现了一次,所以第二个值为 4 。

提示:

  • n == nums1.length
  • m == nums2.length
  • 1 <= n, m <= 100
  • 1 <= nums1[i], nums2[i] <= 100

代码解释

暴力 O(n^2)

class Solution {public int[] findIntersectionValues(int[] nums1, int[] nums2) {int[] ans = new int[]{0, 0};for (int k : nums1) {for (int i : nums2) {if (k == i) {ans[0]++;break;}}}for (int k : nums2) {for (int i : nums1) {if (k == i) {ans[1]++;break;}}}return ans;}
}

T2 消除相邻近似相等字符

给你一个下标从 0 开始的字符串 word

一次操作中,你可以选择 word 中任意一个下标 i ,将 word[i] 修改成任意一个小写英文字母。

请你返回消除 word 中所有相邻 近似相等 字符的 最少 操作次数。

两个字符 ab 如果满足 a == b 或者 ab 在字母表中是相邻的,那么我们称它们是 近似相等 字符。

示例 1:

输入:word = “aaaaa”
输出:2
解释:我们将 word 变为 “acaca” ,该字符串没有相邻近似相等字符。 消除 word 中所有相邻近似相等字符最少需要 2 次操作。

示例 2:

输入:word = “abddez”
输出:2
解释:我们将 word 变为 “ybdoez” ,该字符串没有相邻近似相等字符。 消除 word 中所有相邻近似相等字符最少需要 2 次操作。

示例 3:

输入:word = “zyxyxyz”
输出:3
解释:我们将 word 变为 “zaxaxaz” ,该字符串没有相邻近似相等字符。 消除 word 中所有相邻近似相等字符最少需要 3 次操作

提示:

  • 1 <= word.length <= 100
  • word 只包含小写英文字母。

代码解释

一次遍历,相邻近似相等字符换一次右边的就是操作次数最少的

class Solution {public int removeAlmostEqualCharacters(String word) {int ans = 0;for (int i = 1; i < word.length(); i++) {if (Math.abs(word.charAt(i) - word.charAt(i-1)) < 2) {ans++;i++;}}return ans;}
}

T3 最多 K 个重复元素的最长子数组

给你一个整数数组 nums 和一个整数 k

一个元素 x 在数组中的 频率 指的是它在数组中的出现次数。

如果一个数组中所有元素的频率都 小于等于 k ,那么我们称这个数组是 数组。

请你返回 nums最长好 子数组的长度。

子数组 指的是一个数组中一段连续非空的元素序列。

示例 1:

输入:nums = [1,2,3,1,2,3,1,2], k = 2
输出:6
解释:最长好子数组是 [1,2,3,1,2,3] ,值 1,2 和 3 在子数组中的频率都没有超过 k = 2 。[2,3,1,2,3,1] 和 [3,1,2,3,1,2] 也是好子数组。最长好子数组的长度为 6 。

示例 2:

输入:nums = [1,2,1,2,1,2,1,2], k = 1
输出:2
解释:最长好子数组是 [1,2] ,值 1 和 2 在子数组中的频率都没有超过 k = 1 。[2,1] 也是好子数组。 最长好子数组的长度为 2 。

示例 3:

输入:nums = [5,5,5,5,5,5,5], k = 4
输出:4
解释:最长好子数组是 [5,5,5,5] ,值 5 在子数组中的频率没有超过 k = 4 。 最长好子数组的长度为 4 。

提示:

  • 1 <= nums.length <= 10^5
  • 1 <= nums[i] <= 10^9
  • 1 <= k <= nums.length

代码解释

滑动窗口,哈希表记次数大于 K 时左边界右移,时间复杂度 O(n)

class Solution {public int maxSubarrayLength(int[] nums, int k) {int ans = 0, l = 0, r = 0, n = nums.length;Map<Integer, Integer> map = new HashMap<>();while (r < n) {map.put(nums[r], map.getOrDefault(nums[r], 0) + 1);while (map.get(nums[r]) > k) {map.put(nums[l], map.get(nums[l]) - 1);l++;}ans = Math.max(ans, ++r - l);}return ans;}
}

T4 关闭分部的可行集合数目

一个公司在全国有 n 个分部,它们之间有的有道路连接。一开始,所有分部通过这些道路两两之间互相可以到达。

公司意识到在分部之间旅行花费了太多时间,所以它们决定关闭一些分部(也可能不关闭任何分部),同时保证剩下的分部之间两两互相可以到达且最远距离不超过 maxDistance

两个分部之间的 距离 是通过道路长度之和的 最小值

给你整数 nmaxDistance 和下标从 0 开始的二维整数数组 roads ,其中 roads[i] = [ui, vi, wi] 表示一条从 uivi 长度为 wi无向 道路。

请你返回关闭分部的可行方案数目,满足每个方案里剩余分部之间的最远距离不超过 maxDistance

注意,关闭一个分部后,与之相连的所有道路不可通行。

注意,两个分部之间可能会有多条道路。

提示:

  • 1 <= n <= 10
  • 1 <= maxDistance <= 105
  • 0 <= roads.length <= 1000
  • roads[i].length == 3
  • 0 <= ui, vi <= n - 1
  • ui != vi
  • 1 <= wi <= 1000
  • 一开始所有分部之间通过道路互相可以到达。

代码解释

这次最后一题比较简单,就是 位运算 可以将每个节点选就是 1 不选就是 0,使用 弗洛伊德算法(Floyd) 求最短路,时间复杂度最坏为 O ( 2 n n 3 ) O(2^nn^3) O(2nn3)

class Solution {public int numberOfSets(int n, int maxDistance, int[][] roads) {int ans = 0;int[][] g = new int[n][n];for (int s = (1 << n) - 1; s >= 0; s--) {for (int i = 0; i < n; i++) {Arrays.fill(g[i], Integer.MAX_VALUE / 2);g[i][i] = 0;}for (int[] r : roads) {int u = r[0], v = r[1], w = r[2];if ((s >> u & 1) != 0 && (s >> v & 1) != 0) {g[u][v] = Math.min(g[u][v], w);g[v][u] = Math.min(g[v][u], w);}}for (int k = 0; k < n; k++) {for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {g[i][j] = Math.min(g[i][j], g[i][k] + g[k][j]);}}}int max = 0;for (int u = 0; u < n; u++) {for (int v = 0; v < n; v++) {if ((s >> u & 1) != 0 && (s >> v & 1) != 0) {max = Math.max(max, g[u][v]);}}}if (max <= maxDistance) ans++;}return ans;}
}

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

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

相关文章

Xcode doesn’t support iOS 16.6

xocde版本低&#xff0c;手动放入16.6的依赖文件 https://gitee.com/qiu1993/iOSDeviceSupport/blob/master/iOS16/16.6.zip 路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

JAVA全栈开发 day21_JDBC与反射结合、设计模式

一、总结 一阶段 day01 java 发展&#xff0c;java 环境( path, java_home, class_path)&#xff0c;java 原理&#xff0c; java 执行 &#xff0c; jvm , jre , jdk day02 变量 标识符命名规则 数据类型 数据类型的转换 运算符 day03 选择结构 if , switch day04 循环结…

分割回文串

分割回文串 描述 : 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 题目 : LeetCode 131.分割回文串 : 131. 分割回文串 分析 : 字符串如何判断回文本…

20 Redis进阶 - 运维监控

1、理解Redis监控 Redis运维和监控的意义不言而喻&#xff0c;可以以下三个方面入手 1.首先是Redis自身提供了哪些状态信息&#xff0c;以及有哪些常见的命令可以获取Redis的监控信息; 2.一些常见的UI工具可以可视化的监控Redis; 3.理解Redis的监控体系;2、Redis自身状态及命…

Vue3-02-ref() 响应式详解

ref() 是什么 ref() 是一个函数&#xff1b; ref() 函数用来声明响应式的状态&#xff08;就是来声明变量的&#xff09; ref() 函数声明的变量&#xff0c;是响应式的&#xff0c;变量的值改变之后&#xff0c;页面中会自动重新渲染。ref() 有什么特点 1.ref() 可以声明基础…

VUE语法--toRefs与toRef用法

1、功能概述 ref和reactive能够定义响应式的数据&#xff0c;当我们通过reactive定义了一个对象或者数组数据的时候&#xff0c;如果我们只希望这个对象或者数组中指定的数据响应&#xff0c;其他的不响应。这个时候我们就可以使用toRefs和toRef实现局部数据的响应。 toRefs是…

算一算并输出2到正整数n中每个数的质因子(for循环)

计算并输出2到正整数n之间每个数的质因子&#xff0c;并以乘法形式输出。 输入格式: 输入只有1个正整数即n。 输出格式: 把2到正整数n间的每一个数分解成它的质因子&#xff0c;并以乘法的形式输出。例如&#xff0c;输入的正整数n值为10&#xff0c;则应输出如下&#xff…

MIT线性代数笔记-第28讲-正定矩阵,最小值

目录 28.正定矩阵&#xff0c;最小值打赏 28.正定矩阵&#xff0c;最小值 首先正定矩阵是一个实对称矩阵 由第 26 26 26讲的末尾可知正定矩阵有以下四种判定条件&#xff1a; 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&#xff08; 1 ≤ k ≤ n 1 \le k \le n …

DDD系列 - 第6讲 仓库Repository及Mybatis、JPA的取舍(一)

目录 一、领域层定义仓库接口1.1 设计聚合1.2 定义仓库Repository接口二 、基础设施层实现仓库接口2.1 设计数据库2.2 集成Mybatis2.3 引入Convetor2.4 实现仓库三、回顾一、领域层定义仓库接口 书接上回,之前通过一个关于拆解、微服务、面向对象的故事,向大家介绍了如何从微…

简单的WEB服务器

优质博文&#xff1a;IT-BLOG-CN 目的&#xff1a; 了解Java Web服务器是如何运行的。Web服务器使用HTTP与其客户端&#xff0c;也就是Web浏览器进行通信。基于Java的Web服务器会使用两个重要类&#xff1a;java.net.Socket类和java.net.ServerSocket类&#xff0c;并通过发送…

详解Keras3.0 Models API: Model class

1、语法 keras.Model() 将不同层组为具有训练/推理特征的对象的模型 2、示例一 inputs keras.Input(shape(37,)) x keras.layers.Dense(32, activation"relu")(inputs) outputs keras.layers.Dense(5, activation"softmax")(x) model keras.Model…

58.Nacos源码分析2

三、服务心跳。 3.服务心跳 Nacos的实例分为临时实例和永久实例两种&#xff0c;可以通过在yaml 文件配置&#xff1a; spring:application:name: order-servicecloud:nacos:discovery:ephemeral: false # 设置实例为永久实例。true&#xff1a;临时; false&#xff1a;永久ser…

MySQL-备份+日志:介质故障与数据库恢复

目录 第1关&#xff1a;备份与恢复 第2关&#xff1a;备份日志&#xff1a;介质故障的发生与数据库的恢复 第1关&#xff1a;备份与恢复 任务描述 本关任务: 备份数据库&#xff0c;然后再恢复它。 test1_1.sh # 你写的命令将在linux的命令行运行 # 对数据库residents作海…

【C/C++笔试练习】多态的概念、虚函数的概念、虚表地址、派生类的虚函数、虚函数的访问、指针引用、动态多态、完全数计算、扑克牌大小

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;多态的概念&#xff08;2&#xff09;虚函数的概念&#xff08;3&#xff09;虚表地址&#xff08;4&#xff09;派生类的虚函数&#xff08;5&#xff09;虚函数的访问&#xff08;6&#xff09;分析程序&#xff08;7&…

C# WPF上位机开发(会员管理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 好多同学都认为上位机只是纯软件开发&#xff0c;不涉及到硬件设备&#xff0c;比如听听音乐、看看电影、写写小的应用等等。如果是消费电子&#…

HibernateJPA快速搭建

1. 先创建一个普通Maven工程&#xff0c;导入依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><depe…

Java 匿名内部类使用的外部变量,为什么一定要加 final?

问题描述 Effectively final Java 1.8 新特性&#xff0c;对于一个局部变量或方法参数&#xff0c;如果他的值在初始化后就从未更改&#xff0c;那么该变量就是 effectively final&#xff08;事实 final&#xff09;。 这种情况下&#xff0c;可以不用加 final 关键字修饰。 …

报错:Parsed mapper file: ‘file mapper.xml 导致无法启动

报错 &#xff1a; Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. Registered plugin: com.github.yulichang.interceptor.MPJInterceptor3b2c8bda Parsed mapper file: file [/Mapper.xml] application无法启动 我这边产生原因是项…

K8S学习指南(4)-minikube的使用

文章目录 简介安装 Minikube启动 Minikube 集群基本概念创建和管理资源1. 创建 Pod2. 创建 Deployment3. 创建 Service 监视和调试1. 查看集群状态2. 查看集群信息3. 访问 Kubernetes Dashboard4. 使用 kubectl 命令 清理资源1. 删除 Pod2. 删除 Deployment3. 删除 Service4. 停…

! [remote rejected] master -> master (pre-receive hook declined)

! [remote rejected] master -> master (pre-receive hook declined) 如图&#xff1a; 出错解决方法 首先输入命令 git branch xindefenzhi然后&#xff0c;进入这个新创建的分支 git checkout branch然后重新git push就可以了