栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

17. LeetCode 239. 滑动窗口最大值

17. LeetCode 239. 滑动窗口最大值

LeetCode 239. 滑动窗口最大值

天津科技大学第六届科技文化节算法设计大赛第17题
难度:困难

题目:

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回滑动窗口中的最大值。

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置 最大值


[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
示例 2:

输入:nums = [1], k = 1
输出:[1]
示例 3:

输入:nums = [1,-1], k = 1
输出:[1,-1]
示例 4:

输入:nums = [9,11], k = 2
输出:[11]
示例 5:

输入:nums = [4,-2], k = 2
输出:[4]

提示:

1 <= nums.length <= 105
-104 <= nums[i] <= 104
1 <= k <= nums.length

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sliding-window-maximum

解题思路:
  1. 解法1:滑动数组,在每个状态里进行归并(冒泡/快速/堆)排序,取最大值加入列表
  2. 解法2:滑动数组,使用max()方法直接获取
  3. 问题:大数据量时会运行超时,这就是本题看似简单实际上困难之处
源代码
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        def merge(list_left, list_right):

    # 两个数组的起始下标
            l, r = 0, 0

            new_list = []
            while l < len(list_left) and r < len(list_right):
                if list_left[l] <= list_right[r]:
                    new_list.append(list_left[l])
                    l += 1
                else:
                    new_list.append(list_right[r])
                    r += 1
            new_list += list_left[l:]
            new_list += list_right[r:]
            return new_list


        def merge_sort(mylist):
            """归并排序
            mylist: 待排序数组
            return: 新数组list
            """
            if len(mylist) <= 1:
                return mylist

            mid = len(mylist) // 2
            list_left = merge_sort(mylist[:mid])
            list_right = merge_sort(mylist[mid:])
            return merge(list_left, list_right)
        alist=[]
        while(len(nums)>=k):
            snums=merge_sort(nums[0:k])
            alist.append(snums[-1])
            nums.remove(nums[0])
        return alist
结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/423119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号