卡码网用友提前批笔试 | 121 大数减法、122 滑动窗口最大值、117 软件架构

121 大数减法

一开始这么写,但是就是有90%的数据通过不了

#include <iostream>
#include <string>
using namespace std;void reverse(string& s,int l, int r) {while (l < r) {char c = s[l];s[l] = s[r];s[r] = c;l++; r--;}
}int main() {string a, b;cin >> a >> b;long long ai = stoi(a);long long bi = stoi(b);string s = "";long int res = ai - bi;int flag = res > 0 ? 1 : 0;if (!flag) res *= -1;while (res) {s += (res % 10 + '0');res /= 10;}reverse(s,0, s.size()-1);if (!flag) s = '-' + s;cout << s << endl;return 0;
}

后来知道会有很多数据甚至超过long long的范围,所以要用字符串模拟减法

代码如下:

#include <iostream>
#include <string>
using namespace std;int main() {string a, b;cin >> a >> b;string flag = "";if (a.size() < b.size()) {string t = a;a = b;b = t;flag = "-";}if (a.size() == b.size()) {for (int i = 0; i < a.size(); i++) {if (a[i] > b[i]) break;else if (a[i] == b[i]) continue;else {string t = a;a = b;b = t;flag = "-";break;}}   }string res = a;int j = a.size() - b.size();for (int i = j; i < a.size(); i++) {if (res[i] >= b[i-j]) res[i] = res[i] - b[i-j] + '0';else {int k = i - 1;while (res[k] < '1') {res[k] = '9'; k--;}res[k] = res[k] - 1;res[i] = (10 - (b[i-j] - res[i]) + '0');}}res = flag + res;cout << res << endl;return 0;
}

122 滑动窗口最大值

本来以为要用最大堆最小堆、优先队列的,但是时间复杂度刚好够用了。需要处理下字符串输入转化为整数数组,由于']'之后还有一个',',需要用一个flag记录状态的变化。其他思路就是一个双重循环控制边界的问题了,小心调试潜在的数组或指针越界的问题就ok了

代码如下:

#include <iostream>
#include <string>
#include <vector>
using namespace std;int main() {string s;getline(cin, s);vector<int> nums;int numE = 0;int k = 0;int flag = 0;for (int i = 0; i < s.size(); i++) {if (s[i] == '=') {numE++;if (numE == 2) {string sk = s.substr(i + 2, s.size() - i - 2);k = stoi(sk);}}if (s[i] == ']') flag = 1;if (flag == 0 && (s[i] == '[' || s[i] == ',')) {int end = i + 1;while (s[end+1] != ',' && s[end + 1] != ']') end++;string snum = s.substr(i+1, end - i);int num = stoi(snum);nums.push_back(num);}}int dif = 0;int maxNum = nums[0];int minNum = nums[0];for (int i = 0; i + k - 1 < nums.size(); i++) {maxNum = nums[i];minNum = nums[i];for (int j = i; j < i + k; j++) {if (maxNum < nums[j]) maxNum = nums[j];if (minNum > nums[j]) minNum = nums[j];}if (dif < maxNum - minNum) dif = maxNum - minNum;}cout << dif << endl;return 0;
}

117 软件架构

原本用set删除功能加以辅助计数,后来发现set.erase删除的是按下标访问的数据,而不是实际数据,map应该也差不多。

改进后代码只能通过30%的测试用例,后面要再改改

#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <stack>
using namespace std;int main() {int n, m;cin >> n >> m;queue<long int> myque;stack<long int> mysta;map<long int, set<long int>> mymap;map<long int, long int> nummap;set<long int> res;int flag = 0;for (int i = 0; i < m; i++) {long int a, b;cin >> a >> b;mymap[b].insert(a);nummap[b]++;}while (res.size() < n) {int num = res.size();for (int i = 0; i < n; i++) {if (res.find(i) == res.end() && nummap[i] == 0) {mysta.push(i);res.insert(i);myque.push(i);}}if (num == res.size()) break;while (!mysta.empty()) {long int t = mysta.top();mysta.pop();for (int i = 0; i < n; i++) {if (res.find(i) == res.end() &&nummap[i] > 0 && mymap[i].find(t) != mymap[i].end())nummap[i]--;}}}if (res.size() < n) cout << -1 << endl;else {while (!myque.empty()) {cout << myque.front() << ' ';myque.pop();}cout << endl;}return 0;
}

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

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

相关文章

电阻常见失效模式

电阻常见失效模式&#xff1a; 电阻器由于结构较为简单&#xff0c;工艺成熟&#xff0c;通常失效率相对较低。器失效主要表现为以下几种&#xff1a; 阻值漂移&#xff1a;老化后通常发生&#xff1b;&#xff08;通过老化试验进行筛选&#xff0c;规避该问题&#xff09; …

Golang Context详解

文章目录 基本介绍context源码剖析Context接口emptyCtxcancelCtxtimerCtxvalueCtx context使用案例协程取消超时控制数据共享 基本介绍 基本介绍 在Go 1.7版本中引入了上下文&#xff08;context&#xff09;包&#xff0c;用于在并发编程中管理请求范围的数据、控制生命周期、…

首届IEEE RAS峰会,为什么大厂阿里、字节、腾讯都参加了?

"RAS in Data Centers 2024" 首届IEEE RAS&#xff08;Reliability, Availability, and Serviceability&#xff0c;即可靠性、可用性和可维护性&#xff09;在数据中心峰会在2024年6月11日至12日举行&#xff0c;地点设在美国加利福尼亚州圣克拉拉市的圣克拉拉万豪酒…

Python模块导入,别out了,看看这些高级玩法!

目录 1、基础导入&#xff1a;import语句 &#x1f4da; 1.1 直接导入模块 1.2 导入模块别名 1.3 从模块导入特定属性 2、高级导入&#xff1a;from...import &#x1f9f0; 2.1 选择性导入模块成员 2.2 嵌套模块导入 2.3 避免命名冲突策略 3、动态导入&#xff1a;imp…

32位和64位的Windows7均不支持UEFI启动方式?试试看!

前言 今天小白突然想起&#xff1a;自己已经接近8年没有安装过32位的Windows系统了&#xff0c;这8年装的上百台电脑都是用的64位Windows。 今天 闲来无事 嗯……应该算是有小伙伴提出了个问题&#xff1a; 这位小伙伴表示&#xff1a;自己无论安装32位还是64位的Windows7都…

力扣2080.区间内查询数字的频率

力扣2080.区间内查询数字的频率 在下标上做二分 把所有下标存入哈希表在left,right的范围内做二分求个数 class RangeFreqQuery {unordered_map<int, vector<int>> pos;public:RangeFreqQuery(vector<int>& arr) {for(int i0;i<arr.size();i){pos[…

【机器学习系列】深入理解集成学习:从Bagging到Boosting

目录 一、集成方法的一般思想 二、集成方法的基本原理 三、构建集成分类器的方法 常见的有装袋&#xff08;Bagging&#xff09;和提升&#xff08;Boosting&#xff09;两种方法 方法1 &#xff1a;装袋&#xff08;Bagging&#xff09; Bagging原理如下图&#xff1a; …

vscode 访问容器的方式

方法一&#xff1a;先连服务器&#xff0c;再转入容器 配置客户机A M1. 客户机A通过 vscode 连接服务器B&#xff0c;再连接容器C 配置vscode的ssh配置文件&#xff1a;~.ssh\config&#xff08;当需要多个不同的连接时&#xff0c;使用 IdentityFile 指定公钥位置&#xff09;…

[Mdfs] lc3067. 在带权树网络中统计可连接服务器对数目(邻接表+图操作基础+技巧+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;3067. 在带权树网络中统计可连接服务器对数目 2. 题目解析 挺有意思的一道题目&#xff0c;重点是要能够读懂题目&#xff0c;然后结合几个图相关的处理技巧即可拿下。 图存储&#xff1a;邻接表即可。无向无…

浅谈GNU LIBC的版本间的变化

多线程调试的意外发现 昨天笔者在协助朋友调试一个多线程文件传输的应用时&#xff08;传输代码不依赖开源库&#xff09;&#xff0c;发现会多次打开同一个文件。这样产生的一个结果是文件描述符泄露&#xff0c;应用运行一段时间后&#xff0c;就不能再创建新的文件描述符了…

MyBatis映射器:实现动态SQL语句

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 上一篇文章中&#xff0c;我们已经学习了如何在 MyBatis 的映射器中通过简单的 SQL 语句实现增删改查&#xff0c;今天我…

vue组件之间的通信方式有哪些

在开发过程中&#xff0c;数据传输是一个核心的知识点&#xff0c;掌握了数据传输&#xff0c;相当于掌握了80%的内容。 Vue.js 提供了多种组件间的通信方式&#xff0c;这些方式适应不同的场景和需求。下面是4种常见的通信方式&#xff1a; 1. Props & Events (父子组件通…

Alsa UCM

Alsa Use Case Manager&#xff08;用例管理器&#xff09;描述如何为某些用例&#xff08;如 “播放音频”、“通话”&#xff09;设置 mixer 混频器。它还描述如何修改 mixer 混频器状态以将音频路由到某些输出和输入&#xff0c;以及如何控制这些设备。 这基本上涵盖了 Pul…

1688商品库存查询

目录 下载安装与运行 功能简介 快速入门&#xff08;视频&#xff09; 当前支持的导出项 常用功能 历史商品是什么意思 粘贴商品有什么要求 导入商品需要什么样的模板 单个商品的查看 查看单个商品详情 下载安装与运行 下载、安装与运行 语雀 功能简介 最近一次测…

自下而上语法分析、自上而下语法分析和递归下降法、预测分析法、LL(1)和LR是什么关系

自下而上语法分析、自上而下语法分析、递归下降法、预测分析法、LL(1)和LR都是与语法分析&#xff08;语法解析&#xff09;相关的概念和技术。它们在编译原理中扮演着重要的角色&#xff0c;用于将源代码的字符流转换为语法树&#xff08;或抽象语法树&#xff0c;AST&#xf…

逆序队专题

逆序对的定义是&#xff0c;在一个数组中&#xff0c;对于下标 ( i ) 和 ( j )&#xff08;其中 ( i < j )&#xff09;&#xff0c;如果 ( a[i] > a[j] )&#xff0c;则称 ((a[i], a[j])) 为数组的一个逆序对。 换句话说&#xff0c;逆序对就是在数组中前面的元素大于后…

C++使用Sanp7 实现西门子s7通信

使用Snap7库可以实现与西门子S7系列PLC的通信。以下是一个基本的C示例&#xff0c;演示如何使用Snap7库来连接西门子S7 PLC并读取和写入数据。 环境准备 安装Snap7&#xff1a;从&#xff08;https://sourceforge.net/projects/snap7/files/1.4.2/&#xff09;Snap7官网下载并…

C++算法——埃氏筛

C判断素数&#xff1a;埃氏筛 思路 这个算法是利用打表的方法来计算的&#xff1a; 首先&#xff0c;我们要知道一个特性 就是一个质数的倍数&#xff0c;一定是一个合数 利用这个特性 我们可以写出以下代码 for (int i 2; i * i < n; i) {if (!prime[i] true){for (i…

每日两题7

文章目录 买卖股票的最佳时机含冷冻期买卖股票的最佳时机含手续费 买卖股票的最佳时机含冷冻期 分析&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();vector<vector<int>> dp(n, vector<int>(3…

Python爬取城市空气质量数据并写入mysql数据库

Python爬取城市空气质量数据并写入mysql数据库 这篇文章介绍了如何爬取城市空气质量数据,下面的代码添加了数据库操作,包括使用pymysql创建数据库和数据表,并向数据库中写入数据,完整代码如下: import csv import time import requests # 导入网络请求库requests from bs4…