如何解决以下代码中的错误是什么?没有得到预期的输出
给定一个整数数组和一个整数 k,找出数组中是否有两个不同的索引 i 和 j 使得 nums[i] = nums[j] 并且 i 和 j 之间的绝对差至多为 k .
示例 1: 输入:nums = [1,2,3,1],k = 3 输出:真
示例 2: 输入:nums = [1,1,k = 1 输出:真
tdata = Array{Int64,1}[]
# After 1st collection,push the first batch of data
push!(tdata,[1,4,5])
# After 2nd collection,push this batch of data
push!(tdata,[11,12,13,14,15])
解决方法
我认为您没有评估内部列表的完整长度。
正如所写,j
永远不会等于 3
。
我认为如果你让你的内部循环读取 for (j <- i until nums.length)
应该可以工作。
可能也想修复外循环。否则,i
永远不会达到数组中存储的值 3。
使用until 会排除,所以如果你使用i <- 0 until nums.length -1
,其中length 是3,那么i
的值将是0、1、2 和end。
如果您想减去 - 1,因为它对您来说更容易或更有意义,那么您可能需要使用 i <- 0 to nums.length - 1
。
否则,i <-0 until nums.length
在遍历 for 循环时将导致 i
的值为 0、1、2、3。
希望有所帮助。
,这是功能性的,效率为 O(n) 而不是 O(n^2),并修复了一个错误 (i != j
)。测试时你也应该总是有一个否定的案例;)
import math.{min,max}
def containsNearbyDuplicate(nums: Array[Int])(k: Int): Boolean = {
val indexesToCheck = for {
i <- 0 until nums.length
j <- max(0,i - k) to min(nums.length - 1,i + k)
if i != j
} yield (i,j)
indexesToCheck.exists {case (i,j) => nums(i) == nums(j)}
}
containsNearbyDuplicate(nums = Array(1,2,3,1,5))(k = 3)
containsNearbyDuplicate(nums = Array(1,5))(k = 2)
containsNearbyDuplicate(nums = Array(1,5))(k = 1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。