假设我们给出一个整数列表R = [3,5,3,6,0,6,7]、一个阈值x(整数)和一个窗口大小(整数)p。例如,x=4,p=2。
我需要找到第一个t验证以下条件的索引:
R[t] >= 4, R[t+1] >= 4。由于 p=2,我们只需要验证两个框t和t+1。如果p等于,3我们需要验证t、t+1和t+2。这里t我要寻找的是5(索引从0开始)。
如何在 Kotlin 中以优雅的方式编写此代码(而不是在元素上循环)。
给出错误的尝试(x=4 且 p = 2。输出应为 3,因为我们从 0 开始索引):
val numbers = listOf(1, 2, 3, 4, 6, 8, 2)
val firstIndex = numbers.find { it >= 4 for it in it..it+2-1}
Run Code Online (Sandbox Code Playgroud)
val numbers = listOf(1, 2, 3, 4, 6, 8, 2)
val p = 2
val x = 4
val t = numbers.windowed(p).indexOfFirst { window -> window.all { it >= x } } // t == 3
Run Code Online (Sandbox Code Playgroud)
t-1如果没有找到匹配项,则等于
| 归档时间: |
|
| 查看次数: |
6574 次 |
| 最近记录: |