第89场周赛
时间:2022-07-28
本文章向大家介绍第89场周赛,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
852. 山脉数组的峰顶索引
题解:根据描述,只需要找到最大值所在的索引即可
int peakIndexInMountainArray(vector<int>& A) {
return max_element(A.begin(),A.end())-A.begin();
}
853. 车队
题解:根据描述,第一想法是通过模拟,每经历一段时间,更新每辆车的位置,再判断各辆车的位置,对每辆车的速度进行更新,不太好些代码。
那么尝试从结果出发,如果某车所在位置小,到达终点所需时间大则说明追不上前面的车。
那么构建vector<pair<距离,时间>>
这样向量,依据车所在位置降序排序以后,0索引0处的车子在索引1处前面,当0处的车子的时间小于1处的车子的时间,那么1处的车子追不上1处的车子,车队数目加一。能够被追上车队是花费时间最多的那队。
struct cmp{
bool operator()(const pair<int,double>a,const pair<int,double>b){
return a.first>b.first;
}
};
int carFleet(int target, vector<int>& position, vector<int>& speed){
int len = position.size();
if(len==0) return 0;
vector<pair<int,double>>car(len);
for(int i=0;i<len;i++)
{
car[i] = make_pair(position[i], (target-position[i])/(double)speed[i]);
}//组成位置,到达目的地,不需要变更车速所需时间
sort(car.begin(),car.end(),cmp());
int ret = 1;
double flag = car[0].second;
for(int i=1;i<len;i++)
{
if(car[i].second>flag)//追不上最慢的,在前面的车队,因为降序,接下来序列中的车子都在后面
{
ret++;
flag = car[i].second;
}
}
return ret;
}
855. 考场就座
题解:题目意思可以简化为男生上厕所问题。
设置一个set<int>students
,存放所有学生,学生0,就插入0到set中,学生N-1,就插入N-1。
- seat():当set里面没有学生,自然就需要插入0。 当set里面有学生,就需要找出那个位置最适合插入。怎么找到这个最大位置? 当set里面只有一个元素,那么需要在这个元素位置向左看,向右看 当set里面有多个元素,那么需要计算这个元素之间的距离,以及最左边元素离0位置,最右边元素离N的距离。
- leave():直接earse(p)即可。
class ExamRoom {
public:
int N;
set<int>students;
ExamRoom(int N) {
this->N = N;
}
int seat() {
if(students.size()==0)
{
students.insert(0);
return 0;
}
if(students.size()>0)
{
//找到合适的位置插入,可以计算出距离最大间隔位置
int dist = *(students.begin());//一开始的距离是该值减去0
int pre = INT_MIN;
int student=0;
for (auto s: students) {
if (pre != INT_MIN) {
int d = (s - pre) / 2;
if (d > dist) {
dist = d;
student = pre + d;
}
}
pre = s;
}
//最右边元素离N的距离判断
if (N - 1 - *students.rbegin() > dist)
student = N - 1;
students.insert(student);
return student;
}
return 0;
}
void leave(int p) {
if(students.find(p)!=students.end()){
students.erase(p);
}
}
};
854. 相似度为 K 的字符串
- 100个Numpy练习【5】
- Golang中container/list包中的坑
- 关于Golang语言数组索引的有趣现象
- 使用SQL来分析数据库参数(二)(r10笔记第82天)
- Golang不定参数
- [go语言]利用缓冲信道来实现网游帐号验证消息的分发和等待
- 转--Golang语言版 ssh口令破解工具
- cubieboard(树莓派)安装Ubuntu+Apache+PHP+Mysql
- Oracle 12c里的几点补充(一)(r11笔记第7天)
- Oracle备库的PDB无法连接的问题(r11笔记第6天)
- Golang语言社区--模板的使用
- Golang语言写Web 应用程序
- 强制wordpress后台HTTPS
- Golang语言 Cookie的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法