2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指
Posted 福大大架构师每日一题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指相关的知识,希望对你有一定的参考价值。
2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天
指标X:任意两天的股价之和 - 此两天间隔的天数
比如
第3天,价格是10
第9天,价格是30
那么第3天和第9天的指标X = 10 + 30 - (9 - 3) = 34。
返回arr中最大的指标X。
时间复杂度O(N)。
来自神策。
答案2022-11-18:
一次遍历即可。
时间复杂度:O(N)。
额外空间复杂度:O(1)。
代码用rust编写。代码如下:
fn main()
let mut nums = vec![2, 3, 1, 4, 0];
let ans = max_x(&mut nums);
println!("ans = :?", ans);
fn max_x(arr: &mut Vec<i32>) -> i32
if arr.len() < 2
return -1;
// 0 + arr[0]
let mut pre_best = arr[0];
let mut ans = 0;
for i in 1..arr.len() as i32
ans = get_max(ans, arr[i as usize] - i + pre_best);
pre_best = get_max(pre_best, arr[i as usize] + i);
return ans;
fn get_max<T: Clone + Copy + std::cmp::PartialOrd>(a: T, b: T) -> T
if a > b
a
else
b
执行结果如下:
以上是关于2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指的主要内容,如果未能解决你的问题,请参考以下文章
2022-08-22:给定一个数组arr,长度为n,最多可以删除一个连续子数组, 求剩下的数组,严格连续递增的子数组最大长度。 n <= 10^6。 来自字节。5.6笔试。
2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由01组成的数组arr,长度为N, arr[i] == 0表示str中i位置的字符不许修改, arr[i] ==