前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线,给定一个有序数组arr,表示现在哪些树已经没了

2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线,给定一个有序数组arr,表示现在哪些树已经没了

作者头像
福大大架构师每日一题
发布2023-06-08 14:21:29
1080
发布2023-06-08 14:21:29
举报

2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线,

给定一个有序数组arr,表示现在哪些树已经没了,arr[i]一定在[1,n]范围,

给定一个数字m,表示你可以补种多少棵树。

返回补种之后,最长的连续树木,有多少棵。

答案2022-06-04:

连续补种。滑动窗口。

代码用rust编写。代码如下:

fn main() {
    let mut arr: Vec<isize> = vec![3, 9, 13, 17, 24, 36];
    let ans = longest_trees(50, 2, &mut arr);
    println!("ans = {}", ans);
}

fn longest_trees(n: isize, m: isize, arr: &mut Vec<isize>) -> isize {
    let mut ans = 0;
    let mut start = 1;
    let mut i = 0 as isize;
    let mut j = m;
    while j < arr.len() as isize {
        ans = get_max(ans, arr[j as usize] - start);
        start = arr[i as usize] + 1;
        i += 1;
        j += 1;
    }
    ans = get_max(ans, n - start + 1);
    return ans;
}

fn get_max<T: Clone + Copy + std::cmp::PartialOrd>(a: T, b: T) -> T {
    if a > b {
        a
    } else {
        b
    }
}

执行结果如下:

***

[左神java代码](https://github.com/algorithmzuo/weekly-problems/blob/main/src/class_2022_03_4_week/Code06_LongestContinuousTrees.java)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档