【问题标题】:Rust "+=" operation not returning i32Rust "+=" 操作不返回 i32
【发布时间】:2022-07-19 13:38:49
【问题描述】:
pub fn max_profit(prices: Vec<i32>) -> i32 {
    let mut max_overall = 0;
    let mut max_at_i =  0;

    for i in 1..prices.len() {
        max_at_i = cmp::max(0, max_at_i += prices[i] - prices[i-1]);
        max_overall = cmp::max(max_overall,max_at_i);
    }
    
    return max_overall;
}

我正在练习 leetcode,并通过了一个解决方案。出于某种原因,它说 max 函数中的“max_at_i += prices[i] - prices[i-1]”期待 i32,但收到了“()”。但是当我将 for 循环更改为

for i in 1..prices.len() {
        max_at_i += prices[i] - prices[i-1];
        max_at_i = cmp::max(0, max_at_i);
        max_overall = cmp::max(max_overall,max_at_i);
    }

它工作得很好。为什么会出现这个问题?

【问题讨论】:

    标签: rust


    【解决方案1】:

    与 C 不同,在 Rust 中,所有赋值运算符都返回 (),而不是赋值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      相关资源
      最近更新 更多