第96场周赛
####
883. 三维形体投影面积
题解:根据描述,只需要分别求出底面,侧面,正面的面积即可。
底面的面积通过观察可以看出,是矩阵A[i][j]中不为0的个数,侧面是每一列的最大值总和,正面是每一行的最大值总和。
int projectionArea(vector<vector<int>>& grid) {
int bottom = 0,left=0,front = 0;
for(auto i:grid){
int tmp = 0;
for(auto j:i){
tmp = max(tmp,j);
if(j!=0)bottom+=1;
}
left+=tmp;
}
for(int i=0;i<grid[0].size();i++){
int tmp=0;
for(int j=0;j<grid.size();j++){
tmp = max(tmp,grid[j][i]);
}
front+=tmp;
}
return front+left+bottom;
}
881. 救生艇
题解:根据描述,每次只要尽可能的塞进去两个,就能保证救生艇数量最少。塞哪两个呢,当然是最大和最小的那两个,如果不能塞入两个,就塞入最大的那一个。
int numRescueBoats(vector<int>& people, int limit) {
sort(people.begin(),people.end());
int left=0,right = people.size()-1;
int ret=0;
int tmp = people[right];
while(left<right){
tmp += people[left];
if(tmp>limit){
ret++;
right--;
tmp = people[right];
}
else{
ret++;
right--;
left++;
tmp = people[right];
}
}
return left==right?ret+1:ret;
}
880. 索引处的解码字符串
题解:跟据描述,只要把字符串按照要求解码得到新的字符串,然后按秩访问新的字符串即可。但可惜的是,某些情况会爆内存。
如果我们有一个像 appleappleappleappleappleapple 这样的解码字符串和一个像 K=24 这样的索引,那么如果 K=4,答案是相同的。 一般来说,当解码的字符串等于某个长度为 size 的单词重复某些次数(例如 apple 与 size=5 组合重复6次)时,索引 K 的答案与索引 K % size 的答案相同。 我们可以通过逆向工作,跟踪解码字符串的大小来使用这种洞察力。每当解码的字符串等于某些单词 word 重复 d 次时,我们就可以将 k 减少到 K % (Word.Length)。 算法 首先,找出解码字符串的长度。之后,我们将逆向工作,跟踪 size:解析符号 S[0], S[1], …, S[i] 后解码字符串的长度。 如果我们看到一个数字 S [i],则表示在解析 S [0],S [1],…,S [i-1] 之后解码字符串的大小将是 size / Integer(S[i])。 否则,将是 size - 1。 作者:LeetCode 链接:https://leetcode-cn.com/problems/decoded-string-at-index/solution/suo-yin-chu-de-jie-ma-zi-fu-chuan-by-leetcode/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
string decodeAtIndex(string S, int K) {
long long len = 0;
string ret = "";
for(auto i:S){
if(isdigit(i)) len = len*(i-'0');
else len++;
}
for(int i=S.size()-1;i>=0;i--){
K = K%len;
if(K==0&&(isalpha(S[i]))){
ret = S[i];
return ret;
}
if(isdigit(S[i])) len = len/(S[i]-'0');
else len--;
}
return "";
}
882. 细分图中的可到达结点
- POJ1275 Cashier Employment(差分约束)
- REDIS操作命令小结
- Java发送邮件工具类
- javascript 变量、作用域和内存问题
- 1726: [Usaco2006 Nov]Roadblocks第二短路
- vue小白快速入门
- 算法模板——线段树9(区间加+区间求和+区间方和)
- 1709: [Usaco2007 Oct]Super Paintball超级弹珠
- 2015: [Usaco2010 Feb]Chocolate Giving
- 2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
- 2020: [Usaco2010 Jan]Buying Feed, II
- 2102: [Usaco2010 Dec]The Trough Game
- 洛谷P3707 [SDOI2017]相关分析(线段树)
- Java计数器之CountDownLatch、CyclicBarrier、Semaphore
- 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 数组属性和方法
- Android开发之拖动条和评分组件用法分析
- Android使用AsyncQueryHandler实现获取手机联系人功能
- Android用过TextView实现跑马灯效果的示例
- android如何设置Activity背景色为透明色
- Android 手机防止休眠的两种实现方法
- Android编程实现的首页左右滑动切换功能示例
- 零基础学小程序004----小程序post请求,提交数据到服务器,小程序下单,小程序用户注册功能
- HorizontalScrollView水平滚动控件使用方法详解
- Android Activity生命周期和堆栈管理的详解
- Android学习之SharedPerference存储详解
- Android编程实现对话框Dialog背景透明功能示例
- Android开发中DatePicker日期与时间控件实例代码
- Android Shader应用开发之霓虹闪烁文字效果
- Android中ToggleButton开关状态按钮控件使用方法详解
- 零基础学小程序005---小程序登陆注册功能实现