笔试面试相关记录(5)

(1)给定一个字符串,含有大写、小写字母,空格,数字,需要将其变为满足如下条件:

所有的数字需要换成空格,并且字符串的头尾不包含空格,且整个字符串不包含连续的两个空格。

(2)给定n,k,L,R,接下拉n个数字,要从中选出某个序列,这个序列满足如下条件:

对于整个数组中的任意的k个连续的子数组,所选出的子序列必须包含子数组中的x个数字,其中x>=1 && x <= R;求所有满足条件的子序列的序列和(序列和就是序列中所有元素的数字相加)

示例

3 2 1 2

8 3 4 

输出48

(3)排雷:每次只能排去正方形的四个角的雷,如果雷的数目不够四个或者不在正方形的四个角,则不能排雷,输入数据为n行a b,其中a b表示雷的位置,求可以排雷的最大数目。

例如输入

8
0 0
0 1
1 0
1 1
2 0
2 1
10 0
10 1
输出4,最多可以拍雷四个。

(4)给定一个字符串如下3(a2(c))3(a)2(bc),其中n(str)表示str出现n次,其中n > 0 && n < 10,将其还原为原始字符串。

#include <iostream>
#include <stack>
#include <string>
#include <algorithm>
using namespace std;int main() {string str;while (cin >> str) { // 注意 while 处理多个 caseint len = str.size();stack<string> stk;int i = 0;while(i < len) {if (str[i] == ')') {string t;while (stk.top() != "(") {t += stk.top();stk.pop();}// 取出(stk.pop();// 取出数字// 3(a2(c)) 3(a) 2(bc)string n = stk.top();stk.pop();if (n.find_first_of("123456789") != string::npos) {// 是数字int times = n[0] - '0';string orign = t;for (int k = 0; k < times-1; k++) {t += orign;}} if (stk.size()) {   string c = stk.top();if (c != "(") {t = c + t;stk.pop();}   }stk.push(t);i++;} else {if (str[i] == '(') {stk.push("(");i++;} else if(isdigit(str[i])) {stk.push(to_string(str[i]-'0'));i++;} else {string l = "";while (isalpha(str[i])) {l += str[i];i++;}stk.push(l);}}}cout << stk.top() << endl;}
}

(5)给一串数字,例如 9 8 5 6 3 2 4 1 7 0,第一个数字表示后面数字的个数,后面的数字都不重复,求出最小的峰值数,如果没有就输出-1(峰值数表示其值比左右两边都大的数字);

#include <iostream>
#include <vector>
#include <string>
using namespace std;int main() {string str;while (std::getline(std::cin, str)) { // 注意 while 处理多个 caseint len = str.size();vector<int> nums;int left = 0, t = 0;while (left < len) {if (isdigit(str[left])) {t = t*10 + (str[left]-'0');} else {nums.push_back(t);t = 0;}left++;}nums.push_back(t);// for (int i = 0; i < nums.size(); i++) {//     cout << nums[i] << "-";// }int min_head = 1e8;for (int i = 2; i < nums.size()-1; i++) {if (nums[i] > nums[i-1] && nums[i] > nums[i+1] && nums[i] < min_head) {min_head = nums[i];}}if (min_head == 1e8) {cout << -1 << endl;} else {cout << min_head << endl;}}
}

(6) 

    int a = 1;int &ra = a;int* pa = &a;int* pb = new int(a);a = 2;cout << *pa <<" " << *pb << endl;输出2 1

(7)

void func(char*) {cout << "char *" << endl;
}void func(int) {cout << "int" << endl;
}
int main()
{func(nullptr);return 0;
}
输出char *

(8)

已知一个按照递增顺序排列的整数数组nums和一个目标值target,找出给定目标值在数组中的开始位置和结束位置。

要求:

1.时间复杂度O(log n)

2.空间复杂度O(1)

示例:

输入:nums=[3,5,5,8,8,8,10],target=8

输出:[3,5]

输入:nums=[3,5,5,8,8,8,10],target=9

输出:[-1,-1]

答题模板

class Solution {

public:

   vector<int> searchRange(vector<int>& nums, int target) {

   }

#include <iostream>
#include <vector>using namespace std;int searchleft(vector<int>& nums, int target) {int left = 0, right = nums.size()-1;while (left < right) {int mid = (left+right)>>1;if (nums[mid] >= target) {right = mid;} else {left = mid+1;}}if (nums[left] == target) return left;return -1;
}int searchright(vector<int>& nums, int target) {int left = 0, right = nums.size()-1;while(left < right) {int mid = (left+right)>>1;if (nums[mid] <= target) {left = mid+1;} else {right = mid-1;}}return left;
}vector<int> searchRange(vector<int>& nums, int target) {int left = searchleft(nums, target);vector<int> ans(2, 0);if (left == -1) {ans[0] = -1;ans[1] = -1;return ans;}int right = searchright(nums, target);ans[0] = left;ans[1] = nums[right] == target ? right:right-1;return ans;
}int main() {vector<int> nums{3, 5, 5, 8, 8, 8, 8, 10};int target = 3;vector<int> ans = searchRange(nums, target);cout << ans[0] << " " << ans[1];system("pause");return 0;
}

(9)给你一个整数数组coins, 表示不同面额的硬币,以及一个整数amount,表示总金额。
计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。
你可以认为每种硬币的数量是无限的。
要求:时间复杂度O(Sn), S是金额,n是面额数

数值范围:
1 <= coins.length <= 12
0 <= amount <= 10^4

【测试用例】
输入:coins = [1, 2, 5], amount = 11
输出:3
输入:coins = [2], amount = 3
输出:-1
输入:coins = [1], amount = 0
输出:0

【参考函数】
int coinChange(vector<int>& coins, int amount) {}

#include <iostream>
#include <vector>using namespace std;int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount+1, 1e9);// 总价为0时,需要0张dp[0] = 0;int len = coins.size();for (int i = 0; i < len; i++) {for (int j = coins[i]; j <= amount; j++) {dp[j] = min(dp[j], dp[j-coins[i]] + 1);}}if (dp[amount] == 1e9) {return -1;}return dp[amount];
}int main() {vector<int> coins{1,2,5};int amount = 11;cout << coinChange(coins, amount);system("pause");return 0;
}

(10)

你参与了一个微信小游戏的研发,策划同学计划给你发布n项任务,每项任务会有一个 发布时间点r 和 预估处理时长p ,你需要等待任务发布后才能开始编码实现,同时每项任务都会有一位测试同学跟进测试工作,你需要合理安排工作,让所有测试同学等待的时间之和最少,此外你作为一个资深的程序员,多项任务可以交替进行。
输入:n r1 p1 ... rn pn
输出:各项任务的任务id和完成时间,任务id从下标1开始,按完成时间升序排列
比如
输入:2 1 4 3 1
即发布2项任务,任务1的发布时间点r=1,处理时长p=4;任务2的发布时间点r=3,处理时长p=1,合理的工作安排如下图所示:

输出:
2 4
1 6
测试同学等待的总时长为10
                                                        

image.png

【测试用例】
输入:2 1 4 3 1
输出:
2 4
1 6
输入:3 3 3 4 1 1 7
输出:
2 5
1 7
3 12
输入:2 5 2 3 1
输出:
2 4
1 7
【题目1】请简要阐述解题思路(12分)
【题目2】编写相应的程序实现(24分)
【参考函数】
struct Task {
   int i;          // 任务id
   int r, p;       // 发布时间,处理时长
};
vector<vector<int>> processTasks(vector<Task>& tasks) {}

思路:按照结束时间最早进行排序,这个时候的顺序就是最终的任务执行的顺序,因为多项任务交替进行,每一个任务都有一个测试人员,要让所有测试人员等待最小的时间,需要让 能够最先完成的任务最先完成,如果最先完成的没有在最开始完成,那么它带来的延迟会加到其他所有的测试人员上。(个人思路,不确定是不是正确的)

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;struct Task {int i;int r, p;
};static bool cmp(Task& t1, Task& t2) {return t1.r + t1.p < t2.r + t2.p;
}vector<vector<int>> processTasks(vector<Task>& tasks) {int last_start = tasks[0].r;vector<vector<int>> ans;int len = tasks.size();// 此时第一个任务就是最先完成的任务,直接放入ans中ans.push_back({tasks[0].i, tasks[0].r + tasks[0].p});// 遍历剩下的任务for (int i = 1; i < len; i++) {// 分三种情况if (tasks[i].r < last_start) {int diff = last_start - tasks[i].r;last_start = tasks[i].r;ans.push_back({tasks[i].i, ans.back()[1] + tasks[i].p - diff});} else if (tasks[i].r > tasks[i-1].r + tasks[i].p) {ans.push_back({tasks[i].i, ans.back()[1] + tasks[i].p});} else {int diff = tasks[i].r - (tasks[i-1].r + tasks[i-1].p);last_start += diff;ans.push_back({tasks[i].i, ans.back()[1] + diff + tasks[i].p});}}return ans;
}int main() {int n;cin >> n;vector<Task> tasks(n);for (int i = 0; i < n; i++) {cin >> tasks[i].r;cin >> tasks[i].p;tasks[i].i = i+1;}sort(tasks.begin(), tasks.end(), cmp);// for (int i = 0; i < n; i++) {//     cout << tasks[i].r << " " << tasks[i].p << endl;// }vector<vector<int>> ans = processTasks(tasks);for (int i = 0; i < ans.size(); i++) {cout << ans[i][0] << " " << ans[i][1] << endl;}system("pause");return 0;
}

 

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

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

相关文章

Maven的介绍和使用

Maven的作用 项目构建 依赖管理&#xff1a;避免资源间版本冲突问题 统一开发结构&#xff1a;提供统一的项目结构 Maven的使用 下载完压缩包之后放在合适的目录下&#xff0c;其中apache-maven-3.8.8文件夹是安装的maven&#xff0c;下面的repository是本地仓库&#xff…

月木学途开发 6.网址模块

概述 效果图 数据库设计 网站类型表 DROP TABLE IF EXISTS website; CREATE TABLE website (websiteId int(11) NOT NULL AUTO_INCREMENT,websiteImg longtext,websiteName varchar(255) DEFAULT NULL,websiteUrl longtext,websiteDesc varchar(255) DEFAULT NULL,websiteTy…

Python经典练习题(一)

文章目录 &#x1f340;第一题&#x1f340;第二题&#x1f340;第三题&#x1f340;第四题&#x1f340;第五题 &#x1f340;第一题 有四个数字&#xff1a;1、2、3、4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; 这里我们使用…

HTTP 错误 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。

用IIS 发布网站&#xff0c;不能访问且出现错误&#xff1a;HTTP 错误 401.3 - Unauthorized 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置。您无权查看此目录或页面 问题截图&#xff1a; 问题描述&#xff1a;HTTP 错误 401.3 - 未经授权&#xff1a;访问由于 A…

[RF学习记录][参数读取]从yaml文件读取参数变量

robotframework支持从yaml文件读取变量&#xff0c;对于比较多的参数&#xff0c;可以在yaml文件中定义好&#xff0c;在robot脚本中引用 1、定义yaml文件 文件内容如下&#xff0c;注意&#xff0c;变量和变量值之间要以4个字符分开 yaml_demo_name: tester traing_gpt_…

RabbitMQ 消息应答

每日一句 物是人非事事休,欲语泪先流。 概述 为了保证消息在发送过程中不丢失,RabbitMQ引入了消息应答机制, 消费者在接收到消息并且处理该消息后,告诉RabbitMQ它已经处理了,RabbitMQ可以把消息删除了。 自动应答 消息发送后立即被认为已经传送成功,这种模式需要在…

Python150题day08

2.基础语法篇 2.1 if 条件句 ①单个条件分支 使用input函数接收用户的输入&#xff0c;如果用户输入的整数是偶数&#xff0c;则使用print函数输出"你输入的整数是:{value],它是偶数”&#xff0c;[value]部分要替换成用户的输入。 解答: value input("请输⼊⼀…

Guava Cache介绍-面试用

一、Guava Cache简介 1、简介 Guava Cache是本地缓存&#xff0c;数据读写都在一个进程内&#xff0c;相对于分布式缓存redis&#xff0c;不需要网络传输的过程&#xff0c;访问速度很快&#xff0c;同时也受到 JVM 内存的制约&#xff0c;无法在数据量较多的场景下使用。 基…

苹果开发者账号注册及证书生成方法详解

转载&#xff1a;注册苹果开发者账号的方法 在2020年以前&#xff0c;注册苹果开发者账号后&#xff0c;就可以生成证书。 但2020年后&#xff0c;因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号&#xff0c;所以需要缴费才能创建ios证书了。 所以新政策…

什么是葡萄酒结构,结构型葡萄酒好吗?

葡萄酒爱好者使用许多复杂的术语来描述葡萄酒的味道&#xff0c;有些是不言自明的&#xff0c;有些则有点模糊。如果你不是葡萄酒专家&#xff0c;你可能很难理解这个葡萄酒术语的全部含义。其中一个术语是葡萄酒结构&#xff0c;那么葡萄酒结构是什么意思呢&#xff1f;而结构…

电路的基本定律——基尔霍夫定律

基尔霍夫定律 &#x1f391;预备知识&#x1f391;基尔霍夫电流定律(KCL)&#x1f383;基尔霍夫电流定律的本质&#xff1a;节点上电荷具有连续性(不会突变)&#x1f383;基尔霍夫电流定律的推广&#xff1a; &#x1f391;基尔霍夫的电压定律(KVL)&#x1f383;基尔霍夫电压定…

在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境

目录 在Windos 10专业版搭建Fyne&#xff08;Go 跨平台GUI&#xff09;开发环境一 Fyne 和 MSYS2简介1.1 Fyne1.2 MSYS2 二 安装 MSYS22.1 下载MSYS22.2 安装2.3 环境变量设置2.4 检测安装环境 三 参考文档 在Windos 10专业版搭建Fyne&#xff08;Go 跨平台GUI&#xff09;开发…

zabbix学习2--zabbix6.x高可用

文章目录 1. server高可用-默认HA2. 访问高可用 1. server高可用-默认HA 1.部署zabbix单节点后&#xff0c;配置添加HANodeName和NodeAddress即为HA架构 2.zabbix1故障后切换zabbix2使用 3.浏览器访问主机1&#xff0c;使用主机1php前端连接mysql后zabbix2提供后台服务--------…

算法-单词搜索 II

算法-单词搜索 II 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/word-search-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 DFS 2.1 解题思路 每个格子往上下左右四个方向DFS&#xff0c;拼接后的单词如果在答案集中&…

【若依框架2】前后端分离版本添加功能页

在VSCode的src/views下新建个文件平example,在example下创建test文件夹&#xff0c;在test里创建index.vue文件 <template> <h1>Hello world</h1> </template><script> export default {name: "index" } </script><style s…

2023/9/20总结

maven maven本质是 一个项目管理工具 将项目开发 和 管理过程 抽象成 一个项目对象模型&#xff08;POM&#xff09; POM &#xff08;Project Object Model&#xff09; 项目对象模型 作用 项目构建 提供标准的自动化 项目构建 方式依赖管理 方便快捷的管理项目依赖的资源…

C++【个人笔记1】

1.C的初识 1.1 简单入门 #include<iostream> using namespace std; int main() {cout << "hello world" << endl;return 0; } #include<iostream>; 预编译指令&#xff0c;引入头文件iostream.using namespace std; 使用标准命名空间cout …

springboot整合返回数据统一封装

1、MagCode&#xff0c;错误码枚举类 package com.mgx.common.enums;import lombok.*; import lombok.extern.slf4j.Slf4j;/*** 错误码* author mgx*/ Slf4j NoArgsConstructor AllArgsConstructor public enum MsgCode {/*** 枚举标识&#xff0c;根据业务类型进行添加*/Code…

PostgreSQL 数据库实现公网远程连接

文章目录 前言1. 安装postgreSQL2. 本地连接postgreSQL3. Windows 安装 cpolar4. 配置postgreSQL公网地址5. 公网postgreSQL访问6. 固定连接公网地址7. postgreSQL固定地址连接测试 前言 PostgreSQL是一个功能非常强大的关系型数据库管理系统&#xff08;RDBMS&#xff09;,下…

建议收藏《Verilog代码规范笔记_华为》(附下载)

华为verilog编程规范是坊间流传出来华为内部的资料&#xff0c;其贴合实际工作需要&#xff0c;是非常宝贵的资料&#xff0c;希望大家善存。至于其介绍&#xff0c;在此不再赘述&#xff0c;大家可看下图详细了解&#xff0c;感兴趣的可私信领取《Verilog代码规范笔记_华为》。…