本文主要是介绍2022-11-15:这里有 n 个航班,它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings , 表中第 i 条预订记录 bookings[i] = [firsti, lasti,,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2022-11-15:这里有 n 个航班,它们分别从 1 到 n 进行编号。
有一份航班预订表 bookings ,
表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi]
意味着在从 firsti 到 lasti
(包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。
请你返回一个长度为 n 的数组 answer,里面的元素是每个航班预定的座位总数。
输入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5。
输出:[10,55,45,25,25]。
答案2022-11-15:
力扣1109。
线段树。
差分+前缀和。
代码用rust编写。代码如下:
use std::iter::repeat;impl Solution {pub fn corp_flight_bookings(bookings: Vec<Vec<i32>>, n: i32) -> Vec<i32> {// 1 2 3 4 n// 0 1 2 3 .. n n+1let mut cnt: Vec<i32> = repeat(0).take((n + 2) as usize).collect();for book in bookings.iter() {// start book[0]// end book[1]// 票 book[2]cnt[book[0] as usize] += book[2];cnt[(book[1] + 1) as usize] -= book[2];}for i in 1..cnt.len() {cnt[i] += cnt[i - 1];}let mut ans: Vec<i32> = repeat(0).take(n as usize).collect();for i in 0..n {ans[i as usize] = cnt[(i + 1) as usize];}return ans;}
}fn main() {let b = vec![vec![1, 2, 10], vec![2, 3, 20], vec![2, 5, 25]];let n = 5;let ans = Solution::corp_flight_bookings(b, n);println!("ans = {:?}", ans);
}struct Solution {}
执行结果如下:
左神java代码
这篇关于2022-11-15:这里有 n 个航班,它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings , 表中第 i 条预订记录 bookings[i] = [firsti, lasti,的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!