zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):数组类:第209题:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。

    题目:
    给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。

    进阶:

    如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法

    思路:

    双指针+滑动窗口

    在一个小科技公司的面试时遇到过,当时手写代码写的很长很乱,看了网上的解答后记忆深刻。

    程序:

    class Solution:
        def minSubArrayLen(self, s: int, nums: List[int]) -> int:
            length = len(nums)
            if length <= 0:
                return 0
            if length == 1:
                if nums[0] >= s:
                    return 1
                else:
                    return 0
            head = 0
            auxiliary = 0
            result = float('inf')
            for tail in range(length):
                auxiliary += nums[tail]
                while auxiliary >= s:
                    result = min(result, tail - head + 1)
                    auxiliary -= nums[head]
                    head += 1
            return result if result != float('inf') else 0
  • 相关阅读:
    2020面试有感(1)
    多线程与异步
    GP-荧光免疫分析仪SDK 协议
    FastReport模板设计和调用
    EF的多线程与分库架构设计实现(2)
    HTML页面转化为带有水印的PDF文件
    利用 html2canvas+jsPDF 把 HTML元素 转化为PDF文件,以及遇到的坑
    前端json数据格式化显示
    单元测试——引入Vuex
    单元测试——引入vue-router和APP.vue文件
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12774549.html
Copyright © 2011-2022 走看看