239. Sliding Window Maximum

前端之家收集整理的这篇文章主要介绍了239. Sliding Window Maximum前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
/**
 * 239. Sliding Window Maximum
 * https://leetcode.com/problems/sliding-window-maximum/description/
 *
 * Given an array nums,there is a sliding window of size k which is moving from the very left of the array to the very right.
 * You can only see the k numbers in the window. Each time the sliding window moves right by one position. Return the max sliding window.

Example:
Input: nums = [1,3,-1,-3,5,6,7],and k = 3
Output: [3,7]

Explanation:

Window position                Max
---------------               -----
[1  3  -1] -3  5  3  6  7       3
1 [3  -1  -3] 5  3  6  7       3
1  3 [-1  -3  5] 3  6  7       5
1  3  -1 [-3  5  3] 6  7       5
1  3  -1  -3 [5  3  6] 7       6
1  3  -1  -3  5 [3  6  7]      7
 * */
class Solution {
    fun maxSlidingWindow(nums: IntArray,k: Int): IntArray {
        val result = ArrayList<Int>()
        var left = 0
        var right = left + k
        val size = nums.size
        for (i in 0 until size) {
            val intRange = IntRange(left,right - 1)
            val subArray = nums.slice(intRange)
            result.add(subArray.max()!!)
            left++
            right = left + k
            if (right > size) {
                break
            }
        }
        return result.toIntArray()
    }
}

猜你在找的Windows相关文章