当前位置: 首页 > news >正文

代码随想录算法训练营day2(数组)

华子目录

  • 长度最小的子数组
    • 思路
  • 螺旋矩阵
    • 思路
    • 总结

长度最小的子数组

  • https://leetcode.cn/problems/minimum-size-subarray-sum/

在这里插入图片描述

思路

  • 使用滑动窗口left表示滑动窗口的起始点right表示滑动窗口的终点
class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        left = 0     # left表示滑动窗口的起始点
        res = float('inf')   # float('inf')表示无穷大
        total = 0    # 记录滑动窗口中的和
        length = len(nums)
        for right in range(length):   # right表示滑动窗口的终点
            total += nums[right]
            while total >= target:
                l = right - left + 1
                res = min(l, res)
                total -= nums[left]
                left += 1
        if res == float('inf'):   # 说明在遍历过程中,初始的res始终没有被替换,即nums的总和小于target
            return 0
        else:                # res被替换了,说明有满足条件的
            return res

螺旋矩阵

  • https://leetcode.cn/problems/spiral-matrix-ii/

在这里插入图片描述

思路

  • 每遍历一条边时,保持循环不变量原则,即每一条边都遵循左闭右开[)的原则
class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        arr = [ [None]*n for _ in range(n)]   # 先申请好一段二维数组
        startx, starty = 0, 0   # 每遍历一圈的起始位置
        offset = 1               # 右开
        count = 1               # 技术器
        loop = n // 2           # 总共螺旋的圈数
        mid = n // 2             # 若n为奇数,则最中间元素的坐标
        while loop > 0:
            for y in range(starty, n - offset):    # 上边
                arr[startx][y] = count
                count+=1
            for x in range(startx, n - offset):   # 右边
                arr[x][n - offset] = count
                count+=1
            for y in range(n - offset, starty, -1):   # 下边
                arr[n - offset][y] = count
                count+=1
            for x in range(n - offset, startx, -1):   # 左边
                arr[x][starty] = count
                count+=1
            startx += 1
            starty += 1
            offset += 1
            loop -= 1
        if n%2 == 1:   # 若n为奇数
            arr[mid][mid] = n*n
        return arr

总结

在这里插入图片描述

相关文章:

  • Docker安装常用软件教程(带完整命令)
  • 6.好事多磨 -- UDP网络连接
  • STP基本实验
  • 【C语言】预处理(下)(C语言完结篇)
  • 事件过滤器
  • MySQL 面经
  • 十七、TCP编程
  • 在 Lua 中实现 JSON 与 Table 的相互转换的详细使用方法
  • 《人件》第二章 办公环境
  • CLIP中的Zero-Shot Learning原理
  • `offset_mapping` 是什么
  • C语言—程序的编译和链接
  • 【项目管理】第11章 项目成本管理-- 知识点整理
  • JVM 字节码是如何存储信息的?
  • 开源项目Syncthing-Android环境搭建与编译
  • PostgreSQL内幕探索—基础知识
  • CesiumForUnreal 本地矢量文件的加载,支持 shp/geojson 等常用格式
  • leetcode 2787. Ways to Express an Integer as Sum of Powers
  • 【MQTT-协议原理】
  • [ARC196A] Adjacent Delete 题解
  • wordpress开发视频网站模板下载/百度一下百度网页版主页
  • 做网站公司徐汇/线上广告推广平台
  • 怎么登陆公司网站的后台/网站快速收录付费入口
  • 功能类网站/中国推广网
  • 有创意的食品包装设计/安康seo
  • 怎么看网站是否被收录/黑河seo