代码随想录第二天| 977.有序数组的平方 、 209.长度最小的子数组、 59.螺旋矩阵II

977.有序数组的平方

977. 有序数组的平方 - 力扣(LeetCode)

代码随想录 (programmercarl.com)

        1.暴力解法

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:for i in range(len(nums)):#  nums[i] = pow(nums[i], 2)nums[i] *= nums[i]nums.sort()return nums

因为前面可能会有负数,因此再计算完之后要对整个数字进行一次排序

运行效果意外挺好

        2.双指针法

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:n = len(nums)ans = list(range(0, n))        # 建立一个与nums等长的新数组   for i in range(n):nums[i] = pow(nums[i], 2)  # 将数组中每个数都平方left = 0                        #左指针right = n - 1                    #右指针k = len(ans) - 1                #新指针while left <= right:            #判断判断nums[left]和nums[right]的大小if nums[left] <= nums[right]:    #将大的数存到新数组里ans[k] = nums[right]right -= 1else:ans[k] = nums[left]left += 1k -= 1return ans

利用双指针

1.先建立一个与数组等长的新数组。

2.然后将数组中的每个元素平方

3.设定左指针left,右指针right,新数组指针s

4.当left<=right时,一直循环:

判断nums[left]和nums[right]的大小,将大的存入新数组,然后对应的指针为left就+1,right-1,k-1

209.长度最小的子数组

209. 长度最小的子数组 - 力扣(LeetCode)

代码随想录 (programmercarl.com)

        滑动窗口(双指针)

class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:n = len(nums)left, right = 0, 0sum = 0     #记录窗口的和res = float("inf")      #记录长度,初始值为无限大while right < n:sum += nums[right]while sum >= target:        #当窗口内的和>target,开始缩小窗口res = min(res, right - left + 1)sum -= nums[left]left += 1right += 1if res >= n+1:return 0else:return res

所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果

在本题中实现滑动窗口,主要确定如下三点:

  • 窗口内是什么?
  • 如何移动窗口的起始位置?
  • 如何移动窗口的结束位置?

窗口就是 满足其和 ≥ s 的长度最小的 连续 子数组。

窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。

窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。

解题的关键在于 窗口的起始位置如何移动,如图所示:

59.螺旋矩阵II

59. 螺旋矩阵 II - 力扣(LeetCode)

代码随想录 (programmercarl.com)

class Solution:def generateMatrix(self, n: int) -> List[List[int]]:#初始化矩阵matrix = [[0] * n for _ in range(n)]        #定义初始值num = 1left, right, top, bottom = 0, n-1, 0, n-1while left <= right and top <= bottom:#从左到右for i in range(left, right + 1):        #左闭右开matrix[top][i] = numnum += 1#从上到下for i in range(top+1, bottom+1):matrix[i][right] = numnum += 1#从右到左for i in range(right-1, left-1, -1):matrix[bottom][i] = numnum += 1#从下到上for i in range(bottom-1, top, -1):matrix[i][left] = numnum += 1#缩小边界left += 1top += 1right -= 1bottom -= 1return matrix   
class Solution:def generateMatrix(self, n: int) -> List[List[int]]:nums = [[0] * n for _ in range(n)]startx, starty = 0, 0               # 起始点loop, mid = n // 2, n // 2          # 迭代次数、n为奇数时,矩阵的中心点count = 1                           # 计数for offset in range(1, loop + 1) :      # 每循环一层偏移量加1,偏移量从1开始for i in range(starty, n - offset) :    # 从左至右,左闭右开nums[startx][i] = countcount += 1for i in range(startx, n - offset) :    # 从上至下nums[i][n - offset] = countcount += 1for i in range(n - offset, starty, -1) : # 从右至左nums[n - offset][i] = countcount += 1for i in range(n - offset, startx, -1) : # 从下至上nums[i][starty] = countcount += 1                startx += 1         # 更新起始点starty += 1if n % 2 != 0 :			# n为奇数时,填充中心点nums[mid][mid] = count return nums

以下是chatgpt的解释

offset是一个循环偏移量,表示当前循环中需要跳过的边界长度。假设当前正在填充第k圈,其中k从1开始递增,n为矩阵的行列数,那么第k圈的四条边分别为:

  • 上边界:第k行,从第k列到第n-k列。
  • 右边界:第n-k列,从第k行到第n-k行。
  • 下边界:第n-k行,从第n-k列到第k列。
  • 左边界:第k列,从第n-k行到第k+1行。

在每一圈循环中,我们需要填充四条边的所有元素,这些元素的总个数为n-2*k个,所以我们需要将循环偏移量offset初始化为1,然后在每一圈循环结束后将其加1。最终,当offset的值等于loop时,循环结束,矩阵填充完毕。

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

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

相关文章

【AIGC】大模型协作系统 HuggingGPT 深度解析

欢迎关注【youcans的 AIGC 学习笔记】原创作品 【AIGC】大模型协作系统 HuggingGPT 深度解析 1. 摘要2. 前言3. HugginGPT 大模型协作系统3.1 任务规划3.2 模型选择3.3 任务执行3.4 响应生成 4. HugginGPT 测试案例4.1 实验条件的设置4.2 定性的实验结果4.2.1 任务之间存在资源…

chatgpt赋能python:Python访问控制

Python访问控制 Python是一种非常流行的编程语言&#xff0c;它具有很多优点&#xff0c;其中包括易学、易用、可读性高等等。但是&#xff0c;在编写Python代码时&#xff0c;访问控制是一个很重要的话题。访问控制可以帮助您保护您的代码&#xff0c;并防止非授权用户访问和…

chatgpt赋能python:Python访问网络路径的SEO指南

Python访问网络路径的SEO指南 在当今互联网时代&#xff0c;访问网络路径是一项极为常见的技能。Python作为一种高效、灵活的编程语言&#xff0c;也可以用于访问网络路径。本文将为大家详细介绍Python访问网络路径的方法和技巧&#xff0c;并介绍如何通过优化Python代码来提升…

如何建立一个网站——p1

这里就说一下我是怎么做出来的&#xff0c; 1&#xff0c;首先要去阿里云或者腾讯云申请一个云服务器&#xff0c;如图 有免费适用的云服务器&#xff0c;一般就是两三个月的体验时间。 申请好服务器后&#xff0c;就要用到宝塔了&#xff0c;去搜索宝塔面板 进入这里下载好…

开源免费的多数据库工具Chat2DB

Chat2DB v1.0.11使用 当前使用的版本为1.0.11&#xff0c;目前已经更新到2.0.1版本。 一.Chat2DB介绍 Chat2DB 是一款开源免费的多数据库客户端工具。 能够将自然语言转换为SQL&#xff0c;也可以将SQL转换为自然语言。 支持windows、mac本地安装&#xff0c;也支持服务器端…

chatgpt赋能python:Python的就业前景——解析云计算与Python的结合

Python的就业前景——解析云计算与Python的结合 Python是一种高级编程语言&#xff0c;具有高度的可读性和简洁性&#xff0c;并已成为Web和大数据的主流语言之一。Python广泛应用于数据科学&#xff0c;机器学习&#xff0c;Web开发&#xff0c;游戏开发和金融等领域&#xf…

win10系统安装tensorflow

win10系统安装tensorflow 1 打开conda的cmd&#xff0c;用conda建个名字为tensorflow的毛坯房&#xff0c;并且这个毛坯房以后用到的唯一装修工具是python3.8。输入&#xff1a; conda create -n tensorflow python3.82 查看创建的虚拟环境 conda info --envs3 进入这个毛坯房…

【CAN卡通信的下位机-STM32cubeIDE-hal库+STMF4xx+数据发送和接收+中断接收方式+基础样例(2)】

【CAN卡通信的下位机-STM32cubeIDE-hal库STMF4xx数据发送和接收中断接收方式基础样例2】 1、概述2、实验环境3.1 问题描述3.2 问题已解4、自我尝试与努力(1)在网上查照相关配置文章&#xff0c;进行配置对比。(2)对比st的官方样例例程。(3)请教大佬&#xff0c;帮忙查看代码和…

使用langchain及llama_index实现基于文档(长文本)的相似查询与询问

文章目录 1. 引言2. 简介3. 带关键字的查询方案4. 不带关键字的总结询问5. 实现代码 1. 引言 在调用ChatGPT接口时&#xff0c;我们常常受到4096个字符&#xff08;token&#xff09;的限制。这种限制对于处理长文本或者需要对文档进行相似查询和询问的场景来说是一个挑战。然…

老胡周刊QA微信机器人(基于ChatGPT)

背景 先做个介绍吧&#xff0c;老胡的信息周刊是我从2021-08-16创立的周刊&#xff0c;截止到目前(2023-05-29)将近两年时间&#xff0c;目前已经有92期周刊&#xff0c;中间基本没有断更过&#xff0c;一共发布资源统计如下&#xff1a; &#x1f3af; 项目 288&#x1f916; …

利用qt实现机器人可视化界面,并在界面上控制机器人各个关节运动

本工程借助于clion配置的qt环境&#xff0c;同时依赖eigen tinyxml2等开源库&#xff0c;也借鉴了博客上一些文章&#xff0c;具体哪些忘记了&#xff0c;十分抱歉。本工程仅供参考。机械臂模型为史陶比尔官网的TX2-60L-HB。可以去那下载对应的stp文件。 最终图&#xff1a; 通…

宝塔教程AI创作系统搭建详细教程

一、前言 众所周知&#xff0c;宝塔Linux面板是提升运维效率的服务器管理软件&#xff0c;经过200多个版本的迭代&#xff0c;功能全&#xff0c;少出错且足够安全&#xff0c;已获得全球百万用户认可安装。 优势&#xff1a; 使用宝塔前&#xff1a; 手工输入命令安装各类软…

PyQt报错:界面显示不全,QLayout: Attempting to add QLayout ““ to MyDesiger “Form“, which already has a layout

文章目录 1. 问题和解决2. 原因分析 一个折磨半天没有头绪的问题&#xff1a; 界面显示不全&#xff0c;而且报错 QLayout: Attempting to add QLayout "" to MyDesiger "Form", which already has a layout 1. 问题和解决 在一次将无 layout 的主界面UI…

timeROC出图时显示不全

右侧被占用 原因&#xff1a;Rstudio右下方的plots窗口太小 解决方法&#xff1a;向上向左增大窗口 Time_ROC代码 ####timeROC#### setwd("C:\\Users\\86189\\Desktop\\Time_ROC") #R包 #install.packages("timeROC") #install.packages("survival…

解决软件弹出对话框界面,内容显示不全问题(以OptiBPM为例)

系统环境&#xff1a;win10企业版 软件&#xff1a;OptiBPM9.0 问题阐述&#xff1a;如图所示&#xff0c;在win7系统环境下&#xff0c;Input Plane对话框中Expressior、Offset、Position下方会有输入框可供用户输入&#xff0c;但是在win10系统中无法点击。 解决办法&#…

微信小程序——解决wx.showToast()消息提示框内容显示不全问题

使用wx.showToast()方法&#xff0c;如果提示内容超出小程序规定的限制&#xff0c;则会出现显示不全问题 看到这&#xff0c;解决办法&#xff1a; 第一种&#xff1a;修改提示内容&#xff0c;按其规定的长度去展示 第二种&#xff1a;将其 icon的属性值设置成 none即可

dialog显示不全,布局显示不全,下边框显示不全,只显示一半的BUG

有问题的代码 RelativeLayout layout;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);layout findViewById( R.id.content);layout.setLayoutParams(new RelativeLayout.LayoutPar…

QToolTip太长显示不全的问题

有的文件名字太长了&#xff0c;Qtooptip也无法显示长度&#xff0c;可以将该Qlabel中设置QToolTip的样式如下&#xff0c; 设置QToolTip的宽度和高度&#xff0c;以及字体大小&#xff0c;这样就可以显示了。 QToolTip { font-size:12px; width:1024; height:40; } 效果…

sns解决显示不全不清晰及保存不全问题

import matplotlib.pyplot as plt import pandas as pd import seaborn as snsplt.figure(figsize(15, 10))sns.heatmap(data,cmapReds,annotTrue,fmtd).get_figure().savefig("temp.png",dpi500,bbox_inches tight) # fmt显示完全&#xff0c;dpi显示清晰&#xff…

计量语言学软件Altmann-Fitter阿尔特曼拟合器的使用简介(更新中)

计量语言学软件Altmann-Fitter阿尔特曼拟合器的使用简介 1、Altmann-Fitter是什么1.1 简介1.2 获得地址 2、使用说明2.1 数据文件的格式2.2 读取数据2.3 拟合说明2.3.1 读取数据2.3.2 选择模式2.3.3 拟合 2.4 指标说明2.4.1 卡方检验2.4.2 P值-probability level 3、使用反馈3.…