力扣刷题day2-977有序数组的平方和209长度最小的子数组和59螺旋矩阵
admin
2024-03-28 06:52:01
0

977有序数组的平方

题目描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

思路: 此题可以利用双指针的思想。有序数组的平方,中间可能有负数,负数的绝对值肯定更大。 由于只是进行平方,数组的数量不会变,可以大的放后面。首尾指针,从两端向中间比较。有点类似 27题移除元素的思路。 

代码: 

class Solution(object):def sortedSquares(self, nums):# https://leetcode.cn/problems/squares-of-a-sorted-array/submissions/# 有序数组的平方,中间可能有负数,负数的绝对值肯定更大。 由于只是进行平方,数组的数量不会变,可以大的放后面。首尾指针,从两端向中间比较left = 0right = len(nums) - 1# 最小的数 -float('inf')res = [-float('inf') for _ in range(len(nums))]res_index = len(nums) - 1while left <= right:if nums[left] * nums[left] < nums[right] * nums[right]:res[res_index] = nums[right] * nums[right]right -= 1else:res[res_index] = nums[left] * nums[left]left += 1res_index -= 1return res

209长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。示例:输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。

解题思路: 

滑动窗口来做,因为是正整数数组,所以左右两侧滑动窗口前进(多个元素肯定是会让和增加的,少一个肯定是会让和减少,)

一个可变长度的滑动窗口

定义LR为窗口的左右两侧

首先R往前找,直到窗口内这个数组和>= target

此时内层不断缩短左侧,直到< target,过程中不断更新ans为最短的值

class Solution(object):def minSubArrayLen(self, target, nums):""":type target: int:type nums: List[int]:rtype: int"""### 参考题解,滑动窗口的思想"""## 思路: 滑动窗口来做,因为是正整数数组,所以左右两侧滑动窗口前进(多个元素肯定是会让和增加的,少一个肯定是会让和减少,)一个可变长度的滑动窗口定义LR为窗口的左右两侧首先R往前找,直到窗口内这个数组和>= target此时内层不断缩短左侧,直到< target,过程中不断更新ans为最短的值"""# left,right,total,ans = 0, 0, 0, len(nums)+1left,right=0,0cur_sum=0smallest=len(nums)+1 # 要取最小,给个大的初始值while right = target: while cur_sum >= target: #注意 此时内层不断缩短左侧,#直到< target,过程中不断更新ans为最短的值smallest = min( smallest ,right-left+1)cur_sum -= nums[left]left +=1right += 1 # 注意这个right+=1也不能少,因为这是缩短过左侧后小于,便也要考虑右侧加一else:right += 1if smallest != len(nums)+1 :return smallest else :return 0 

59螺旋矩阵

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例:输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]

思路: 先建一个二维数组,给数组值时注意上下边界!注意正序和逆序给值的边界值!

class Solution(object):def generateMatrix(self, n):""":type n: int:rtype: List[List[int]]"""### 螺旋矩阵题目的汇总见: https://labuladong.github.io/algo/2/19/25/ 他这个总结的挺好# matrix=[[ j*n+i+1 for i in range(n)] for j in range(n)]matrix = [[0 for _ in range(n)] for _ in range(n)]top ,bottom,left,right=0,n-1,0,n-1num=1while num<=n*n:for i in range(left,right+1):matrix[top][i]=numnum+=1top +=1if top >bottom:breakfor i in range(top,bottom+1):matrix[i][right]=num num+=1right -=1if right right : break return matrix

相关内容

热门资讯

高中生抑郁症 高中生抑郁症两年前出现所描述症状,未医自愈,近来几月复发,这两星期特严重,相关休学证明如何开有时间可...
一个车加个乐字念什么 一个车加个乐字念什么如题如题谢谢,车,乐。
勇于任事是什么意思 勇于任事是什么意思勇于任事者 很多时候明知不可为而为 有相当的棱角 善于任事者 则凡事趋利避害见风使...
求几本主角穿越到二次元的完结小... 求几本主角穿越到二次元的完结小说,最好是那种穿越去了又穿越回来的。有资源就更好了……月宿 网王...
金庸小说里的所有武功秘籍? 金庸小说里的所有武功秘籍?九阳真经 九阴真经 蜀道难牌法 雷动於九天之上剑法 一阳指 五罗轻烟掌 六...
《荆棘王座》是悲剧还是喜剧啊? 《荆棘王座》是悲剧还是喜剧啊?我问的是最终结局耶应该是喜剧把或者是悲喜参杂。。。
契阔是什么意思? 契阔是什么意思?死生契阔,与子成说是什么?无论生死,永不分离,是我们早以订下的誓言。我要牵着你的手,...
有多少物种因人为因素灭绝? 有多少物种因人为因素灭绝?例:亚洲狮(1908),渡渡鸟(???),旅鸽(1930),猛犸象(???...
你的世界不再有我,我的世界不再... 你的世界不再有我,我的世界不再有你。我不能再珍惜你,抱歉,我失去的,也是你失去的分手后,我还认识你,...
解锁溪水冰镇荔枝吃法!肇庆鼎湖... 7月12日,肇庆鼎湖山景区的飞水潭瀑布从30米高的悬崖飞泻而下,激起阵阵清凉水雾。景区特别设置了互动...
在工作中犯错了怎么办 在工作中犯错了怎么办在工作中犯错,在所难免,不过你不能重复犯错,这样就不正常了,要学会避免犯错误,举...
酒吗水吗喝吗醉吗下联是 酒吗水吗喝吗醉吗下联是酒吗水吗喝吗醉吗下亮梁凯联敬唤是钱嘛渣含纸嘛花嘛赚嘛。酒吗水吗指酒就是水做的,...
老保姆教我蒸鸡蛋,蒸出来和豆腐... 厨房灶台边,老保姆李姨微微俯身,眼睛眯成温柔的两道细缝。她手中的瓷碗倾斜下来,清澈的温水一点点注入金...
仙剑四中玄霄头上红色的那道有什... 仙剑四中玄霄头上红色的那道有什么含义?打扮用的 让霄哥更cool玄霄的印记与重楼的火纹印完全不同!玄...
三国演义为什么要美化诸葛亮 三国演义为什么要美化诸葛亮是在三国演义问世之前,有关三国的故事就已经流传很广,各种传说故事,说书人共...
寻找如《火爆妖夫》这一类的完结... 寻找如《火爆妖夫》这一类的完结小说《云狂》吧!风行烈写的真的都很好看。诱君欢盗情兽妃诱奴娇
跪求按键精灵英雄联盟挂机脚本源... 跪求按键精灵英雄联盟挂机脚本源码想做个脚本给自己用用。就是没有源码。这么难不给财富
《名侦探柯南》里主要人物的生日... 《名侦探柯南》里主要人物的生日是几月几日?柯南里主要人物:兰,新一,服部,和叶,毛利...........
小花今年7岁,小白今年4岁,当... 小花今年7岁,小白今年4岁,当两人年龄和为21岁时,小花多少岁?7+4=1121-11=1010/2...
赞美石头的诗词有哪些 赞美石头的诗词有哪些《莲石》【唐】白居易青石一两片,白莲三四枝.寄将东洛去,心与物相随.石倚风前树,...