当前位置:网站首页>2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须
2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须
2022-08-08 21:37:00 【福大大架构师每日一题】
2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。
大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须下降一点。
(1) 如果只有一个大炮,返回最多能拦截多少导弹。
(2) 如果所有的导弹都必须拦截,返回最少的大炮数量。
答案2022-08-08:
问题一:最长递减子序列。网上关于最长递增子序列的代码实在太多了,这里就不写了。
问题二:贪心+有序表。用已存在的最接近的稍高的大炮去打。
代码用rust编写。代码如下:
use std::collections::BTreeMap;
fn main() {
let mut arr = vec![15, 7, 14, 6, 5, 13, 5, 10, 9];
println!("ans = {}", num_of_cannon(&mut arr));
}
const MAX_VALUE: i32 = 1 << 31 - 1;
fn num_of_cannon(arr: &mut Vec<i32>) -> i32 {
// key : 某个大炮打的结尾数值
// value : 有多少个大炮有同样的结尾数值
// 比如:
// 一共有A、B、C三个大炮
// 如果A大炮此时打的高度是17,B大炮此时打的高度是7,C大炮此时打的高度是13
// 那么在表中:
// 7, 1
// 13, 1
// 17, 1
// 如果A大炮此时打的高度是13,B大炮此时打的高度是7,C大炮此时打的高度是13
// 那么在表中:
// 7, 1
// 13, 2
let mut ends: BTreeMap<i32, i32> = BTreeMap::new();
for num in arr.iter() {
if ends.range(num + 1..).take(1).last() == None {
ends.insert(MAX_VALUE, 1);
}
let ceil_key = *ends.range(num + 1..).take(1).last().unwrap().0;
let ceil_value = *ends.range(num + 1..).take(1).last().unwrap().1;
if ceil_value > 1 {
ends.insert(ceil_key, ceil_value - 1);
} else {
ends.remove(&ceil_key);
}
ends.insert(
*num,
match ends.get(num) {
Option::Some(v) => v + 1,
Option::None => 1,
},
);
}
let mut ans = 0;
for (_, value) in ends.iter() {
ans += *value;
}
return ans;
}执行结果如下:
边栏推荐
猜你喜欢
随机推荐
为什么用了大牌工具后报表开发依然头疼
封装 uniapp request 请求
MATLAB:方程组的求解
玩转C#网页抓取
中国石油大学(北京)-《钻井液工艺原理》第三阶段在线作业
打印机的使用
【公开课预告】:AV1编码器的优化及其在流媒体和实时通讯中的应用
中国石油大学(北京)-《 渗流力学》第二阶段在线作业
活动推荐 | 快手StreamLake品牌发布会,8月10日一起见证!
How is the commission for online account opening reduced?Is it safe to open an account with an online account manager?
如何配合代理使用cURL?
The crawler series: use MySQL to store data
Likou Question of the Day----Maximum Average of Subarrays
2020-03-09
数据告诉你:中国足球还有理论性出线的可能吗?
依赖注入的正确打开方式 bilibili/kratos × google/wire
matlab入门基础{特殊变量}:单元型变量和结构型变量
爬虫系列:使用 MySQL 存储数据
IPv6 private address
联合国前副秘书长点赞零数云南落地项目








