当前位置: 首页 > news >正文

leetcode解题思路分析(一百三十九)1190 - 1196 题

  1. 反转每对括号间的子串
    给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。

可以简单的用栈保存当前层级,然后遇到下一个右括号的时候进行当前字符的反转拼接从而递归的完成。但是更巧妙的是,先获取到每个括号的索引,然后访问到左括号则跳转至对应右括号继续读数据,直到再次遇到同括号则继续跳转。

class Solution {
public:string reverseParentheses(string s) {int n = s.length();vector<int> pair(n);stack<int> stk;for (int i = 0; i < n; i++) {if (s[i] == '(') {stk.push(i);} else if (s[i] == ')') {int j = stk.top();stk.pop();pair[i] = j, pair[j] = i;}}string ret;int index = 0, step = 1;while (index < n) {if (s[index] == '(' || s[index] == ')') {index = pair[index];step = -step;} else {ret.push_back(s[index]);}index += step;}return ret;}
};
  1. K 次串联后最大子数组之和
    给定一个整数数组 arr 和一个整数 k ,通过重复 k 次来修改数组。例如,如果 arr = [1, 2] , k = 3 ,那么修改后的数组将是 [1, 2, 1, 2, 1, 2] 。返回修改后的数组中的最大的子数组之和。注意,子数组长度可以是 0,在这种情况下它的总和也是 0。由于 结果可能会很大,需要返回的 109 + 7 的 模 。

分析最大子数组和可能的情况
最大子数组存在于单个数组内,此时最大和即为单个数组内的最大子数组和
最大子数组横跨两个数组,此时最大和即为单个数组内的最大前缀和加上最大后缀和
最大子数组横跨多个数组,此时要求单个数组总和大于0,此时最大和即为k-2个数组和加上最大前缀和加上最大后缀和

class Solution {
public:int kConcatenationMaxSum(vector<int>& arr, int k) {int base = 1000000007;// arr的累计和long arrSum = 0;// k=1情况下的最大和long maxSum = 0;// 临时累计最大值long curr = 0;int n = arr.size();for (int i = 0; i < n; ++i){arrSum += arr[i];curr = max(curr + arr[i], (long)arr[i]);maxSum = max(maxSum, curr);}if (k == 1){return maxSum % base;}// cout << maxSum << " " << curr << endl;// k=2情况下的最大和,至少不比maxSum小long maxSum2 = maxSum;for (int i = 0; i < n; ++i){curr = max((curr + arr[i]), (long)arr[i]);maxSum2 = max(maxSum2, curr);  }if (k==2){return maxSum2 % base;}// cout << maxSum << " " << maxSum2 << endl;return arrSum > 0 ? (maxSum2 + ((k-2)*arrSum)%base)%base : maxSum2;}
};
  1. 查找集群内的关键连接
    力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号。它们之间以 服务器到服务器 的形式相互连接组成了一个内部集群,连接是无向的。用 connections 表示集群网络,connections[i] = [a, b] 表示服务器 a 和 b 之间形成连接。任何服务器都可以直接或者间接地通过网络到达任何其他服务器。关键连接 是在该集群中的重要连接,假如我们将它移除,便会导致某些服务器无法访问其他服务器。请你以任意顺序返回该集群内的所有 关键连接 。

** Tarjan 算法模板题**

class Solution {
public:vector<vector<int>> criticalConnections(int n, vector<vector<int>>& connections) {vector<vector<int>> graph(n);for (auto& conn : connections) {graph[conn[0]].push_back(conn[1]);graph[conn[1]].push_back(conn[0]);}vector<int> rank(n, -2);vector<vector<int>> res;dfs(graph, rank, 0, -1, 0, res, n);return res;}int dfs(vector<vector<int>>& graph, vector<int>& rank, int curr, int prev, int depth, vector<vector<int>>& res, int n) {rank[curr] = depth;int min_back_depth = depth;for (int next : graph[curr]) {if (next == prev) continue;if (rank[next] == -2) {int back_depth = dfs(graph, rank, next, curr, depth + 1, res, n);min_back_depth = min(min_back_depth, back_depth);if (back_depth > depth) {res.push_back({curr, next});}} else {min_back_depth = min(min_back_depth, rank[next]);}}rank[curr] = n;return min_back_depth;}
};
  1. 每月交易 I
    编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。以 任意顺序 返回结果表。

DATE_FORMAT(date, format) :用于以不同的格式显示日期/时间数据。date 参数是合法的日期,format 规定日期/时间的输出格式

# Write your MySQL query statement below
SELECT DATE_FORMAT(trans_date, '%Y-%m') AS month,country,COUNT(*) AS trans_count,COUNT(IF(state = 'approved', 1, NULL)) AS approved_count,SUM(amount) AS trans_total_amount,SUM(IF(state = 'approved', amount, 0)) AS approved_total_amount
FROM Transactions
GROUP BY month, country
  1. 交替打印字符串
    请你实现一个有四个线程的多线程版 FizzBuzz, 同一个 FizzBuzz 实例会被如下四个线程使用:
    线程A将调用 fizz() 来判断是否能被 3 整除,如果可以,则输出 fizz。
    线程B将调用 buzz() 来判断是否能被 5 整除,如果可以,则输出 buzz。
    线程C将调用 fizzbuzz() 来判断是否同时能被 3 和 5 整除,如果可以,则输出 fizzbuzz。
    线程D将调用 number() 来实现输出既不能被 3 整除也不能被 5 整除的数字。

使用原子atomic,然后对每个函数定好条件循环执行。

class FizzBuzz {int n_;atomic<int> num_=1;
public:FizzBuzz(int n) {n_ = n;}void fizz(function<void()> pa) {while(1){while(!(num_>n_||num_%3==0&&num_%5!=0))this_thread::yield();if(num_>n_)break;pa();num_++;if(num_>n_)break;}}void buzz(function<void()> pb) {while(1){while(!(num_>n_||num_%3!=0&&num_%5==0))this_thread::yield();if(num_>n_)break;pb();num_++;if(num_>n_)break;}}void fizzbuzz(function<void()> pc) {while(1){while(!(num_>n_||num_%3==0&&num_%5==0))this_thread::yield();if(num_>n_)break;pc();num_++;if(num_>n_)break;}}void number(function<void(int)> pd) {while(1){while(!(num_>n_||num_%3!=0&&num_%5!=0))this_thread::yield();if(num_>n_)break;pd(num_);num_++;if(num_>n_)break;}}
};
  1. 最小绝对差
    给你个整数数组 arr,其中每个元素都 不相同。
    请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。
    每对元素对 [a,b] 如下:
    a , b 均为数组 arr 中的元素
    a < b
    b - a 等于 arr 中任意两个元素的最小绝对差

升序排列,然后遍历判断即可

class Solution {
public:vector<vector<int>> minimumAbsDifference(vector<int>& arr) {int n = arr.size();sort(arr.begin(), arr.end());int best = INT_MAX;vector<vector<int>> ans;for (int i = 0; i < n - 1; ++i) {if (int delta = arr[i + 1] - arr[i]; delta < best) {best = delta;ans = {{arr[i], arr[i + 1]}};}else if (delta == best) {ans.emplace_back(initializer_list<int>{arr[i], arr[i + 1]});}}return ans;}
};

相关文章:

leetcode解题思路分析(一百三十九)1190 - 1196 题

反转每对括号间的子串 给出一个字符串 s&#xff08;仅含有小写英文字母和括号&#xff09;。请你按照从括号内到外的顺序&#xff0c;逐层反转每对匹配括号中的字符串&#xff0c;并返回最终的结果。注意&#xff0c;您的结果中 不应 包含任何括号。 可以简单的用栈保存当前层…...

PHP+vue基于web的小区物业管理管理系统1995a

小区物业管理系统主要是对小区物业以及居民信息进行管理&#xff0c;方便用户使用该资源的一种有效手段。能有效地对物业以及用户信息进行管理并为广大用户服务是该管理系统的基本要求&#xff0c;同时用户也可以及时了解最新的物业信息&#xff0c;方便地查询相关物业情况。基…...

区间预测 | MATLAB实现QRCNN卷积神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRCNN卷积神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN卷积神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现QRCNN卷积神经网络分位数回归时间序列区间预测…...

【AI 导航网站】为了更好的收集 AI 资源,我开发了一个 AI 导航网站

AI 导航网站 目前 AI 应用正呈迸发式增长&#xff0c;然而一个人获取资源的途径有限&#xff0c;对于目前存在的AI工具不能很好的收集总结&#xff0c;所以基于此&#xff0c;我开发了这个一个AI导航网站&#xff0c;希望通过它&#xff0c;收集出目前存在的热门的AI应用&…...

谈谈HMI 的自动化生成技术

人机界面&#xff08;HMI&#xff09;是自动化领域不可或缺重要组成部分。尽管人机界面系统的设计看上去并没有太大的技术门槛&#xff0c;但是设计一个HMI系统的工作量是巨大的。如果你没有足够的耐心便完成不了一个通用的HMI系统。构建UI控件库是一个似乎永远完不成的事情&am…...

docker安装elasticsearch

使用docker部署 部署elasticsearch # 拉取镜像 docker pull elasticsearch# 创建容器 docker run --name es -p 9200:9200 \-p 9300:9300 \-e "discovery.typesingle-node" \-e ES_JAVA_OPTS"-Xms64m -Xmx128m" \-v /home/es/conf/elasticsearch.yml:/…...

Docker:使用dockerFile创建镜像(war包和jar包)

1、使用war包打镜像 &#xff08;1&#xff09;在war的当前路径下&#xff0c;新建一个文件——Dockerfile &#xff08;2&#xff09;编辑Dockerfile文件 vim Dockerfile Dockerfile文件内容&#xff1a; FROM java:8 # 选择项目中要求的版本 MAINTAINER ylb …...

2.基础篇

目录 一、描述软件测试的生命周期&#xff08;软件测试的流程&#xff09; 二、如何描述一个bug 三、bug的级别&#xff08;粗略划分&#xff09; 四、bug的生命周期 五、因为一个bug和开发人员产生争执怎么办 六、如何设置弱网&#xff1f; 一、描述软件测试的生命周期&a…...

取代你的可能不是AI,而是比你更会使用AI的人

1、背景 从开始了解AI到现在已经1个月了&#xff0c;最明显的就是&#xff0c;产品层出不穷&#xff0c;以前只有技术人员才关系AI&#xff0c;现在各行各业都在关系AI&#xff0c;都希望通过它提高生产力和创造力&#xff1b; 在当今大数据和人工智能时代&#xff0c;职场和企…...

NECCS|全国大学生英语竞赛C类|词汇和语法|语法题|时态 非谓语动词 |19:00~20:15|完形填空·词性转化

14:35&#xff5e;14:45 15:45&#xff5e;16:2019:00&#xff5e;20:15 http://t.csdn.cn/XbsUy 目录 &#xff08;一&#xff09;时态 7. 将来进行时 8. 过去将来进行时 9. 现在完成时 10. 过去完成时​编辑 11. 将来完成时 12. 现在完成时 13. 过去完成进行时 &#xff08;…...

【高等数学笔记】Stolz定理

文章目录 Stolz定理 ∗ ∞ \cfrac{*}{\infty} ∞∗​型 0 0 \cfrac{0}{0} 00​型 例子1. 算术平均数的极限2. Stolz定理可以被理解为“数列的洛必达法则”&#xff0c;它揭示了两个数列之比的极限和相邻两项之差的比的极限的关系。 Stolz定理 ∗ ∞ \cfrac{*}{\infty} ∞∗​型…...

【24】核心易中期刊推荐——图像处理研究大数据及智能处理研究

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…...

Codeforces Round 870 (Div. 2)【A、B、C、D】

文章目录 A. Trust Nobody(暴力)B. Lunatic Never Content(数学)C. Dreaming of Freedom(数学、暴力)D. Running Miles(前缀、后缀) 传送门 A. Trust Nobody(暴力) 题意&#xff1a;给出n个人的陈述&#xff0c;每个人陈述至少有ai个人说谎&#xff0c;让你求出可能是说谎人数…...

BetaFlight统一硬件AOCODARC H7DUAL配置文件讨论

BetaFlight统一硬件AOCODARC H7DUAL配置文件讨论 1. 源由2. Review配置3. 分析整理3.1 生产商信息3.2 磁力计3.3 气压计3.4 陀螺仪3.5 串口RxTx3.6 板载Flash3.7 模拟OSD MAX74563.8 PPM接收机3.9 伺服器3.10 LED灯带3.11 蜂鸣器3.12 电机 X83.13 ADC(电压/电流/RSSI信号强度/空…...

力扣题库刷题笔记682-棒球比赛

1、题目如下&#xff1a; 2、个人Python代码实现如下&#xff1a; 代码如下&#xff1a; class Solution: def calPoints(self, operations: List[str]) -> int: i 0 #用于遍历元素的下标 while i < len(operations): …...

SpringCloud------Eureka修改实例显示信息、服务发现Discovery、自我保护(六)

SpringCloud------Eureka修改实例显示信息、服务发现Discovery、自我保护&#xff08;六&#xff09; 1.actuator微服务信息完善 2.服务发现Discovery 3.Eureka自我保护 actuator微服务信息完善 web和actuator依赖用于图形化监控 1.主机名称&#xff1a;服务名称修改 新增…...

Java 远程debug,IDEA 远程 Debug 调试

有时候我们需要进行远程的debug&#xff0c;本文研究如何进行远程debug&#xff0c;以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 配置 远程debug的服务&#xff0c;以SpringBoot微服务为例。 首先&#xff0c;启动SpringBoot需要加上特定的参数。 …...

将webrtc的音频模式改为共享模式

修改音频设备模式:打开文件modules/audio_device/include/audio_device.h,将AudioDeviceModule::kPlatformDefaultAudioProcessing为true改为false。这将禁用默认的音频处理,使得可以修改音频设备模式。 修改音频设备模式的初始化:打开文件modules/audio_device/audio_dev…...

电脑cpu占用率高?怎么办?1分钟快速解决!

案例&#xff1a;电脑cup过高怎么办&#xff1f; 【我的电脑运行缓慢&#xff0c;导致我学习和工作的效率很低。刚刚查看了一下电脑&#xff0c;发现它的cpu占用率很高。有没有小伙伴知道如何解决此电脑cpu过高的问题&#xff1f;】 电脑是我们生活中不可缺少的工具&#xff…...

使用JPA自动生成代码(轻松上手看了就会版)

目录 背景&#xff1a;方案概念&#xff1a;JPA 的主要作用 jpa简单使用&#xff08;Springboot项目&#xff09;jpa进阶使用总结 背景&#xff1a; 项目需要自动生成sql代码&#xff0c;不需要写sql语句&#xff0c;能够自动进行查询&#xff0c;我想到了JPA。 方案 概念&a…...

jdk动态代理

jdk动态代理:基于反射动态生成代理对象 pwp动态代理的步骤比较复杂&#xff0c;无需特别深入的理解&#xff0c;在jdk中固定的步骤&#xff0c;只需要知道这些步骤即可&#xff0c;不必钻牛角尖 动态代理涉及到的三个反射包类 InvocationHandlerMethodProxy 1. InvocationHand…...

备忘录模式

备忘录模式 备忘录模式定义使用场景1、撤销操作&#xff1a;2、游戏进度保存&#xff1a;3、定时器&#xff1a;4、浏览器历史记录&#xff1a;5、购物车状态保存&#xff1a;6、场景总结 角色定义Originator 发起人角色:Memento 备忘录角色:Caretaker 备忘灵管理员角色:需求背…...

问题解决:跨域访问错误

今天做前端页面渲染的时候遇到一个问题, 因为我使用的wsl开发,windows直接访问不了wsl中的文件,还要改其他配置没成功,索性就不改了,粘贴在桌面上用浏览器打开调试 然后所有使用apifox通过测试的路径全部报错 Ensure CORS response header values are validA cross-origin reso…...

程序员应该怎么自学才能入门 ?我来聊聊自己的经历

当你想成为一名程序员&#xff0c;如何自学入门是一个非常重要的问题。在这里我分享一下我的经验&#xff0c;希望能对你有所帮助。 首先&#xff0c;为了制定好你的学习路线&#xff0c;你可以在网上的培训机构网站找到一张基础路线图。这张路线图必须是跟行业对标的&#xf…...

听我一句劝,别去外包,干了6年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了6年的功能测试&…...

leetcode 88 合并两个有序数组

题目描述&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&am…...

软件项目成本控制的5大关键点 不得不重视

软件项目成本一般分为运营成本和项目成本。而运营成本比较固定&#xff0c;压缩和削减的余地不大。而在项目成本中&#xff0c;最主要的成本是人工成本。那么如何提高项目开发效率&#xff0c;节约人工成本&#xff0c;对成本管理至关重要。 我们从以下几个影响项目成本的主要因…...

CSS样式更改:边框Border的另类用法

CSS样式更改——字体设置Font&边框Border 随着互联网技术的不断发展&#xff0c;网页设计已经成为了一项非常重要的工作。在网页设计中&#xff0c;字体设置和边框Border是两个非常常见的CSS样式&#xff0c;可以通过这两个样式对网页的外观进行设置。下面&#xff0c;我们…...

shell的灵活运用 (函数,关联数组,循环,awk,sed等)

题目 提示&#xff1a;没有基础请先看看基础部分的讲解&#xff0c;否则看不懂 1&#xff0c;编写函数&#xff0c;实现判断是否无位置参数&#xff0c;如无参数&#xff0c;提示错误 代码&#xff1a; #bash/bin function a() {b$# #判断传入的参数个数 # echo $b…...

大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>

大疆无人机飞控开发 大疆无人机SDK开发包功能概述飞行控制相机实时视频流传感器数据下载媒体文件遥控器&#xff0c;电池和无线链路连接应用程序和产品 v4版sdk 二次开发注册成为DJI开发者生成 App KeyAndroid 示例代码配置Android Studio项目集成创建一个新的应用配置Gradle 脚…...