此系列是我用kotlin二刷leetcode写的总结,会总结用各个方法做的题目以及心得,主要是剑指offer专栏的题目
滑动窗口
第一题:剑指offer57_2输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
细节:
- (1...num)是包括1和num,(1 util num)不包括num
- IntArray是kotlin里面对于数组的特殊类型,是Kotlin 为基本类型定制 Array 来避免装箱,可见文章为什么不直接使用 Array<Int> 而是 IntArray ?
代码:
fun findContinuousSequence(target: Int): Array<IntArray> {
val res = arrayListOf<IntArray>()
val middle = target / 2 + 1
var start: Int = 1
var sum = 0
(1..middle ).forEach {
sum += it
while (sum>target){
sum-=start
start++
}
if (sum == target) {
var temp = intArrayOf()
for (i in start..it )temp+=i
res += temp
}
}
return res.toTypedArray()
}