008和大于等于 target 的最短子数组---2022/03/21

题目描述

给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
题目来源

解题思考

版本一:首先是考虑双层遍历,如果当前子数组长度小于记录的长度,则进行更新。由于时间复杂度是o(n的平方),所以超出了时间限制。

版本二:参考了一些大牛的解法,主要是利用双指针以及滑动窗口的方法进行实现。降低了时间复杂度。总体思想还是利用有限的空间实现更快速的运算。

代码实现

版本一:

def minSubArrayLen(target, nums):
        """
        :type target: int
        :type nums: List[int]
        :rtype: int
        """
        if len(nums)==0:
            return 0
        sum1=0
        for i in range(len(nums)):
            sum1+=nums[i]
        if sum1< target:
            return 0
        len1 = len(nums)
        for i in range(len(nums)):
            sum=nums[i]
            if sum>target or sum==target:
                return 1
            for j in range(i+1,len(nums)):
                sum+=nums[j]
                if sum > target or sum == target:
                    if j-i+1 < len1:
                        len1=j-i+1
                        break
        return len1

版本二:

class Solution(object):
    def minSubArrayLen(self, target, nums):
        """
        :type target: int
        :type nums: List[int]
        :rtype: int
        """
        minlen=2**32
        i=0
        r=0
        tag=False
        sum=0
        while r<len(nums):
            sum+=nums[r]
            while sum>=target:
                tag=True
                minlen=min(minlen,r-i+1)
                sum-=nums[i]
                i+=1
            r+=1
        return minlen if tag else 0
       



性能评估

在这里插入图片描述
心之所向,素履以往。
心得:无法改变我们的环境,那就平和我们的心境,面对回避不掉的问题,迎面而上,全力以赴。问心无愧就好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将yyyy-MM-dd格式转换为yyyy/mm/dd格式,可以使用C#中的DateTime.ParseExact方法。首先,需要定义一个格式数组,其中包含可能出现的日期格式。例如,可以使用以下格式数组: string[] format = { "yyyy-MM-dd", "yy-MM-dd" }; 接下来,使用DateTime.ParseExact方法将字符串日期转换为DateTime对象。使用适当的格式数组和所需的区域设置。例如,使用以下代码进行转换: string dateStr = "2022-12-31"; // 输入的日期字符串 DateTime date = DateTime.ParseExact(dateStr, format, System.Globalization.CultureInfo.GetCultureInfo("en-US"), System.Globalization.DateTimeStyles.None); 最后,使用DateTime对象的ToString方法将日期以所需的yyyy/mm/dd格式转换为字符串。例如: string result = date.ToString("yyyy/MM/dd"); 这样,你可以将yyyy-MM-dd格式的日期字符串转换为yyyy/mm/dd格式的字符串。请注意,如果输入的日期字符串与指定的格式不匹配,将会引发异常。因此,确保提供的日期字符串与指定的格式相匹配,以避免出现异常。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [C#dd/MM/yyyy 格式转为yyyy/MM/dd 格式](https://blog.csdn.net/weixin_38950569/article/details/121351700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值