代码随想录Day2 | LeetCode 209. 长度最小的子数组、LeetCode 59. 螺旋矩阵 II、KamaCoder 44. 开发商购买土地

news/2024/9/19 12:36:58/文章来源:https://www.cnblogs.com/li508q/p/18417346

LeetCode 209. 长度最小的子数组

子数组是一个连续的,很容易想到滑动窗口

class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:windowSum = 0left, right = 0, 0res = float('inf')while right < len(nums):push = nums[right]windowSum += pushright += 1while windowSum >= target:res = min(res, right - left)pop = nums[left]windowSum -= popleft += 1return res if res != float('inf') else 0

拓展

如果 nums 数组中包含负数,则窗口扩大时元素和不见得就增大,窗口缩小时元素和不见得就减小,这种情况就不能单纯使用滑动窗口技巧了,可能需要混合动态规划和单调队列来做。

862. 和至少为 K 的最短子数组

LeetCode 1425. 带限制的子序列和

LeetCode 53. 最大子数组和

这里给出的是滑动窗口解法

class Solution:def maxSubArray(self, nums: List[int]) -> int:windowSum = 0res = float("-inf")left = right = 0while right < len(nums):push = nums[right]windowSum += pushright += 1res = max(res, windowSum)while windowSum < 0:pop = nums[left]windowSum -= popleft += 1return res 

LeetCode 59. 螺旋矩阵 II

模拟题,做这一题之前可以先试试 LeetCode 54. 螺旋矩阵

class Solution:def generateMatrix(self, n: int) -> List[List[int]]:matrix = [[None for _ in range(n)] for _ in range(n)]idx = 1a, b, x, y = 0, 0, n - 1, n - 1for _ in range(n ** 2):for j in range(b, y + 1):matrix[a][j] = idxidx += 1a += 1for i in range(a, x + 1):matrix[i][y] = idxidx += 1y -= 1for j in range(y, b - 1, -1):matrix[x][j] = idxidx += 1x -= 1for i in range(x, a - 1, -1):matrix[i][b] = idxidx += 1b += 1return matrix

LeetCode 54. 螺旋矩阵

class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:m, n = len(matrix) - 1, len(matrix[0]) - 1x, y = 0, 0res = []while x <= m and y <= n:for j in range(y, n + 1):if x <= m and y <= n:res.append(matrix[x][j])x += 1for i in range(x, m + 1):if x <= m and y <= n:res.append(matrix[i][n])n -= 1for j in range(n, y - 1, -1):if x <= m and y <= n:res.append(matrix[m][j])m -= 1for i in range(m, x - 1, -1):if x <= m and y <= n:res.append(matrix[i][y])y += 1return res          

KamaCoder 44. 开发商购买土地

前缀和思想

import sysdef find(matrix):m, n = len(matrix), len(matrix[0])preSum_matrix = [[None for _ in range(n)] for _ in range(m)]preSum_matrix[0][0] = matrix[0][0]for i in range(m):for j in range(n):up = preSum_matrix[i - 1][j] if i - 1 >= 0 else 0left = preSum_matrix[i][j - 1] if j - 1 >= 0 else 0left_up = preSum_matrix[i - 1][j - 1] if i - 1 >= 0 and j - 1 >= 0 else 0preSum_matrix[i][j] = matrix[i][j] + up + left - left_upres = float('inf')for i in range(m - 1):if res == 0:return 0res = min(res, abs(preSum_matrix[m - 1][n - 1] - preSum_matrix[i][n - 1] * 2))for j in range(n - 1):if res == 0:return 0res = min(res, abs(preSum_matrix[m - 1][n - 1] - preSum_matrix[m - 1][j] * 2))return resif __name__ == "__main__":lines = sys.stdin.read().strip().splitlines()idx = 0res = []while idx < len(lines):m, n = map(int, lines[idx].strip().split())idx += 1matrix = []for _ in range(m):line = list(map(int, lines[idx].strip().split()))matrix.append(line)idx += 1res.append(str(find(matrix)))sys.stdout.write("\n".join(res))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/798675.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信授权登录接口开发

微信登陆过程 在项目开发中,难免会遇到微信授权登录这一操作,本讲来讲一下微信登陆是如何实现的? 关于校验登录,有诸多方法,记录方法如下:使用Spring MVC提供的拦截器 网关服务全局过滤器 使用AOP面向横切面实现对于使用Spring MVC提供的拦截器来实现,其大致的思路如下:注…

1 计算机系统

计算机系统抽象层次6 用户 可执行程序5 高级语言 C++ Java4 汇编语言 汇编代码3 系统软件 操作系统 /库代码2 机器 指令集架构(ISA)1 控制(控制怎么执行) 微代码 /硬连线0 数字逻辑(执行) 电路、门等Language Processor: 语言处理器 语言处理器的两个阶段:分析源程序 合成目…

人工智能生成合成内容标识办法(征求 意见稿)发布

当前国家发布的关于人工智能生成合成内容标识的法律法规有:《中华人民共和国网络安全法》、《互联网信息服务算法推荐管理规定》、《互联网信息服务深度合成管理规定》、《生成式人工智能服务管理暂定办法》等。 征求意见稿 2024年9月14日,国家网信办发布关于《人工智能生成合…

南沙信奥老师解题:1167:再求f(x,n)

​ 用递归函数求解。【输入】第一数是x的值,第二个数是n的值。【输出】函数值。【输入样例】 1 2 【输出样例】 0.40#include <iostream> #include <stdlib.h> using namespace std; double f(double x,double n) {if(n==1)return x/(1+x);elsereturn x/(n+f(x,n-…

概率分布深度解析:PMF、PDF和CDF的技术指南

本文将深入探讨概率分布,详细阐述概率质量函数(PMF)、概率密度函数(PDF)和累积分布函数(CDF)这些核心概念,并通过实际示例进行说明。 在深入探讨PMF、PDF和CDF之前,有必要先简要介绍两种常用的概率分布:正态分布和均匀分布。 正态分布: 也称为高斯分布或钟形曲线,正…

冒泡排序(重要!)

1.作用 比较数组中两个相邻的数,如果第一个数比第二个数大,则会交换位置。 每一次比较都会产出最大或是最小的数,下一轮则可以少一次排序,依次循环,直到结束 2.机制 冒泡排序分为两个循环,外层冒泡轮数(总的次数循环),而内层比较大小(两个数进行比较) 可以想象有三个…

Luogu P10812

题目描述 给定一根 \(1\) 到 \(N\) 的数轴。一开始有一个棋子在 \(N\)。每次棋子 \(x\) 可以跳到 \(x-1,x+1\) 或 \(x\) 的因子处(不能超出 \(1\) 到 \(N\))。 每个点只能到达一次。求棋子到达 \(1\) 的方案数。 思路 由于求倍数比因子简单,所以把问题变成从 \(1\) 到 \(N\)…

爬虫cookie的使用

cookie是一种由网站创建并存储在用户计算机上的小型文本文件。访问该网站时由浏览器返回给服务器。cookie主要作用是帮助网站记住用户信息,包括但不限于:会话管理,网站使用cookie识别用户的会话,以便用户在浏览网站时不需要重复登录。 个性化体验,通过存储用户的偏好设置,…

unity人工智能游戏、源码、教程(中秋特别版),完全免费和开源

三维虚拟世界的人工智能对话。 完全免费、完全开源、完整详细、通俗易懂。 我把游戏、游戏源码、教程(三合一)放到了夸克网盘: 链接:https://pan.quark.cn/s/65e22d51c1bb任何人不要和我说话,我不想跟任何人说话,因为我对现实世界的人类不感兴趣。谁跟我说话,我都不会理…

校招前的思考

又有了一次参加校招的机会,我希望校招这种活动,自己每参加一次,都能加深一次理解。校招前,我想思考清楚一个问题:企业为什么要校招?又有了一次参加校招的机会,我希望校招这种活动,自己每参加一次,都能加深一次理解。校招前,我想思考清楚一个问题:企业为什么要校招?…

江锐第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc这个作业的目标 学习博客园的基本知识,并介绍自己,自我认知姓名-学号 江锐-2022329301014一、个人简介 (1)基本信息 姓 名: 江锐 物 理 家 乡:湖北武汉 专 业: 电气工程及其自动化 网 络 家 乡:github,…

中秋快乐

最近北京的天气真不错 昨天出门,傍晚天渐渐黑了,抬头看见好圆整的月亮,才意识到中秋到了,没啥课天天放假已经对工作日假期没啥概念了。 祝大家中秋快乐! Lemon越听越很上头,特别是2019年演唱会版真的很有感觉, 还能学习一波假名。 又有点想去演唱会了,上次还是工体Shane…