2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线, 给定一个有序数组arr,表示现在哪些树已经没了,arr[i]一定在[1,n]范围, 给定一个数字m,表示你可以补种多

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代码

posted @   福大大架构师每日一题  阅读(16)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
历史上的今天:
2021-06-04 2021-06-04:给定三个参数:二叉树的头节点head,树上某个节点target,正数K,从target开始,可以向上走或者向下走。返回与target的距离是K的所有节点。
点击右上角即可分享
微信分享提示