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

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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代码

以上是关于2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线, 给定一个有序数组arr,表示现在哪些树已经没了,arr[i]一定在[1,n]范围, 给定一个数字m,表示你可以补种多的主要内容,如果未能解决你的问题,请参考以下文章

统计数字问题

1-1统计数字问题

[Python]CCF——数字排序(201503-2)

(HDU)1008 -- Elevator(电梯)

ccf数字排序

CCF 201503-2 数字排序