第94场周赛
时间:2022-07-28
本文章向大家介绍第94场周赛,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
872. 叶子相似的树
题解:根据描述,只需要深度遍历两颗树,把叶子节点都存到两个向量中,判定两个向量是不是一模一样。
bool leafSimilar(TreeNode* root1, TreeNode* root2) {
vector<int>ret1;
vector<int> ret2;
dfs(root1,ret1);
dfs(root2,ret2);
if(ret1.size()!=ret2.size()) return false;
for(int i=0;i<ret1.size();i++){
if(ret1[i]!=ret2[i])return false;
}
return true;
}
void dfs(TreeNode* root,vector<int>& ret){
if(!root) return;
if(!root->left&&!root->right) ret.push_back(root->val);
dfs(root->left,ret);
dfs(root->right,ret);
}
874. 模拟行走机器人
题解:根据描述,只要用代码模拟这个过程即可,比较难受的是方向变换,方向变换也是有规律的。dirs = [0,1],[1,0],[0,-1],[-1,0],向左转,方向的索引减;向右转,方向的索引加。障碍物判定,还是需要转换为集合,方便查找。
int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {
vector<vector<int>>dirs = {{0,1},{1,0},{0,-1},{-1,0}};//向北,向东,向南,向西
set<pair<int,int>>obs;//将obstacles转成set
for(auto i:obstacles){
obs.insert(make_pair(i[0],i[1]));
}
int dir = 0;
int ret = 0;
pair<int,int>start = make_pair(0,0);
for(auto command:commands){
if(command==-2){
dir = (dir+3)%4;//dir在dirs的新index,向左转
}
else if(command==-1){
dir = (dir+1)%4;//向右转
}
else{
for(int i=0;i<command;i++){
start.first+=dirs[dir][0];
start.second+=dirs[dir][1];
if(obs.find(start)!=obs.end()){
start.first-=dirs[dir][0];
start.second-=dirs[dir][1];
break;
}
ret = max(ret,start.first*start.first+start.second*start.second);
}
}
}
return ret;
}
875. 爱吃香蕉的珂珂
题解:根据描述,本题就是一个二分查找的修改,二分查找的要求变成了题目要求条件。
从1开始枚举,枚举满足条件的K。如果满足,继续枚举,如果不满足,那么就在这附近了。
int minEatingSpeed(vector<int>& piles, int H) {
int lo = 1, hi = *(max_element(piles.begin(),piles.end()));
while (lo < hi) {
int mi = lo + (hi - lo);
if (!possible(piles, H, mi))//二分查找在这里是target==vec[mi]
lo = mi + 1;
else
hi = mi;
}
return lo;
}
bool possible(vector<int>& piles, int H, int K) {
int time = 0;
for (auto p: piles)
time += (p - 1) / K + 1;
return time <= H;
}
873. 最长的斐波那契子序列的长度
- [解读REST] 6.REST的应用经验以及教训
- [认证授权] 6.Permission Based Access Control
- [认证授权] 5.OIDC(OpenId Connect)身份认证授权(扩展部分)
- [认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心部分)
- [OIDC in Action] 1. 基于OIDC(OpenID Connect)的SSO
- [OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- [认证授权] 2.OAuth2授权(续) & JWT(JSON Web Token)
- [Cake] 0.C#Make自动化构建-简介
- [认证授权] 3.基于OAuth2的认证(译)
- [Asp.Net Core] 1. IIS中的 Asp.Net Core 和 dotnet watch
- kafka数据迁移实践
- HDFS 2.x 磁盘间数据均衡的一种可行办法
- Batik渲染png图片异常的bug修复全程记录
- Web应用服务器安全:攻击、防护与检测
- 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 数组属性和方法
- Java并发之ThreadPoolExecutor 线程执行服务
- Java并发之工具类 ForkJoin 任务分解
- 简单的 http 服务器
- 动态代理:cgib、jdk、java javassist
- JAVA NIO Channel
- JAVA NIO Scatter/Gather(矢量IO)
- JAVA NIO FileChannel 内存映射文件
- JAVA NIO Socket通道
- Mysql Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operat
- Spring 资源文件处理
- Spring profile配置应用
- Spring Bean的加载
- Spring ApplicationContext 简介
- Spring 配置String转Date
- zookeeper事务