首页 > 编程语言 >代码随想录算法训练营Day2|209.长度最小的子数组 59.螺旋矩阵

代码随想录算法训练营Day2|209.长度最小的子数组 59.螺旋矩阵

时间:2024-10-03 16:24:20浏览次数:17  
标签:count 59 nums 209 随想录 len start range offset

学习资料:https://programmercarl.com/数组总结篇.html#数组的经典题目

移动窗格,首尾指针根据条件变化
模拟行为,循环不变量(左闭右闭或左闭右开)整个过程保持一致

学习记录:
209.长度最小的子数组(用while使得尾指针遍历全部;用while实现,当[首:尾]之和>目标值,才移动首指针;为了求最小长度,先设置最小长度为正无穷float('inf'))

点击查看代码
class Solution(object):
    def minSubArrayLen(self, target, nums):
        """
        :type target: int
        :type nums: List[int]
        :rtype: int
        """
        begin=0
        end=0
        sum=0
        min_len=float('inf')   #设置为无穷大,方便找到最小值
        while end < len(nums):
            sum += nums[end]
            while sum >= target:
                sum -= nums[begin]
                sub_l=end-begin+1
                min_len = min(sub_l, min_len)
                begin += 1
            end += 1
        if min_len != float('inf'):
            return min_len
        else:
            return 0

59.螺旋矩阵(边界值很多,有初始横纵指针、左闭右开需要从n剪掉的offset、从1开始计数的count;当奇数阶矩阵,中间多出来的1项单独设置;螺旋转的圈数为n//2)

点击查看代码
class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        start_x = 0
        start_y = 0
        nums = [[0]*n for _ in range(n)]
        cycle, mid = n//2, n//2
        offset=1
        count=1
        for c in range(cycle):
            for j in range(start_y, n-offset):
                nums[start_x][j]=count
                count += 1
            for i in range(start_x, n-offset):
                nums[i][n-offset]=count 
                count += 1
            for j in range(n-offset, start_y, -1):
                nums[n-offset][j]=count
                count += 1
            for i in range(n-offset, start_x, -1):
                nums[i][start_y] = count
                count += 1
            start_x += 1
            start_y += 1
            offset += 1
        if n%2 != 0:
            nums[mid][mid]=count
        return nums

PS:
螺旋矩阵好绕啊,被9个数字给绕麻了
今天阴天,好冷,终于要放假了

标签:count,59,nums,209,随想录,len,start,range,offset
From: https://www.cnblogs.com/tristan241001/p/18445759

相关文章

  • 59_初识搜索引擎_搜索相关参数梳理以及bouncing results问题解决方案
    1、preference决定了哪些shard会被用来执行搜索操作_primary,_primary_first,_local,_only_node:xyz,_prefer_node:xyz,_shards:2,3bouncingresults问题,两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询打到不同的replicashard上;每次页面上看到的搜索......
  • 代码随想录算法-回溯4
    题目1491.非递减子序列给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例1:输入:nums=[4,6,7,7]输出:[[4,6],[4......