Scala将元素添加到Scala的Nil列表中

用户名

我正在解决leetcode上的问题-https : //leetcode.com/problems/minimum-absolute-difference/

我似乎无法理解为什么将结果列表下面的代码重置为nil后未正确附加。我当然在网上看,但无法理解这种行为背后的概念。有人可以解释为什么在将结果分配为Nil之后,没有值可以添加到该列表中吗?如何重置列表?我尝试了ListBuffer和,clear()但遇到了同样的问题,在运行结束时结果为Nil

预期行为:输入:arr = [4,2,1,3]输出:[[1,2],[2,3],[3,4]]

实际行为:输入:arr = [4,2,1,3]输出:List()

  def minimumAbsDifference(arr: Array[Int]): List[List[Int]] = {
    val sortedInput = arr.sorted
    var min = Integer.MAX_VALUE
    var result = Seq[List[Int]]()
    for(i <- 0 until sortedInput.length - 1){
      val diff = sortedInput(i+1) - sortedInput(i)
      if(min > diff){
         result = Nil
         min = diff
      }
      if(min == diff){
        result :+ List(sortedInput(i),sortedInput(i+1))
      }
    }
    result.toList
  }
列维·拉姆西(Levi Ramsey)

你分配Nilresult从来就不是分配别的。

因为List是不可变的,所以result :+ List(...)返回一个新列表,然后将其丢弃。您需要将新列表分配给result

其他一些注意事项:

  • 追加到列表的效率极低(决定不是“ leet”)。预先添加(反向生成结果)然后最后反向添加,效率更高。

  • List按索引访问项目也是极其低效的

  • 使用var一般应避免在Scala中,虽然这个特定使用(包含本地给原本纯函数)是不是超出苍白。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Scala中将元素添加到列表

来自分类Dev

将元素添加到作为IMMUTABLE映射的scala集

来自分类Dev

将元素添加到子列表

来自分类Dev

将元素添加到mvc中的列表中的问题

来自分类Dev

在Scala中将元素添加到不可变列表

来自分类Dev

高效地将元素添加到python中的列表

来自分类Dev

将for循环元素添加到列表

来自分类Dev

将元素添加到列表中的特定位置

来自分类Dev

将新元素添加到列表

来自分类Dev

将元素添加到不同位置的列表中

来自分类Dev

将列表元素添加到csv

来自分类Dev

Scala将元素添加到可迭代的选项

来自分类Dev

将元素添加到深度嵌套的列表中

来自分类Dev

将配置添加到Scala中的Singleton对象

来自分类Dev

将元素添加到列表Java

来自分类Dev

在Scala中将元素添加到列表

来自分类Dev

将元素均匀添加到列表

来自分类Dev

在scala中可以将多个数组值添加到列表中?

来自分类Dev

将元素添加到类列表中

来自分类Dev

Java将元素添加到列表

来自分类Dev

Scala,将列表的最后两项的总和添加到同一列表中

来自分类Dev

将元素添加到列表中的特定位置

来自分类Dev

将元素添加到键值对列表

来自分类Dev

将键值对添加到Scala中的Map

来自分类Dev

以正确的顺序将元素添加到python中的列表

来自分类Dev

在Scala中将元素添加到树中

来自分类Dev

将某些冗长的元素添加到列表中

来自分类Dev

无法将元素添加到列表中

来自分类Dev

如何将一个集合添加到 Scala 中的集合列表中