kotlin刷题总结(2)滑动窗口

此系列是我用kotlin二刷leetcode写的总结,会总结用各个方法做的题目以及心得,主要是剑指offer专栏的题目

滑动窗口

第一题:剑指offer57_2输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)

序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
细节:

  1. (1...num)是包括1和num,(1 util num)不包括num
  2. IntArray是kotlin里面对于数组的特殊类型,是Kotlin 为基本类型定制 Array 来避免装箱,可见文章为什么不直接使用 Array 而是 IntArray ?
    代码:
 fun findContinuousSequence(target: Int): Array {
        val res = arrayListOf()
        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()
    }

你可能感兴趣的:(kotlin刷题总结(2)滑动窗口)