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

977.有序数组的平方  

Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.

Example 1:

Input: nums = [-4,-1,0,3,10]

Output: [0,1,9,16,100]

Explanation: After squaring, the array becomes [16,1,0,9,100]. After sorting, it becomes [0,1,9,16,100].

#1 自己看到题目的第一想法 

排列题;暴力解法的话就是循环一遍,得到square的array,即 [16,1,0,9,100],再用快速排列或者归并,时间复杂度是 nlogn。

另一种方法则是使用双指针 left 和 right, 取 nums[left]^2 和 nums[right]^2 中大的存入res中,再l++ / r--。

#2 看完代码随想录之后的想法 

本题为什么会考虑到左右指针呢,主要是因为本题的数组其实是有序的,即使是平方之后也是有序的。

同时,时间复杂度为n,比暴力解的nlogn+n还是小很多的。

#3 收获  

在排序题中,如果本身的数组是有序的,那么可以选用左右指针而非快排/归并。

209.长度最小的子数组  

Given an array of positive integers nums and a positive integer target, return the minimal length of a contiguous subarray [numsl, numsl+1, ..., numsr-1, numsr] of which the sum is greater than or equal to target. If there is no such subarray, return 0 instead.

Example 1:

Input: target = 7, nums = [2,3,1,2,4,3]

Output: 2

Explanation: The subarray [4,3] has the minimal length under the problem constraint.

#1 自己看到题目的第一想法 

暴力解法的话就是 i 从 0 开始,j 从 i 开始,sum i 到 j 的所有元素,看是否大于7,如果大于7,保存 i 到 j 的长度并且停止 j 的循环。时间复杂度为 n^2。

但是在 leetcode 跑也超时了,那么应该怎么降维度呢?

可以使用双指针降维,如果使用双指针,left 和 right,left 从 0 开始,right 从 0 开始,res += right (res 初始值为 0),如果res >= 7 那么 记录  (right - left + 1) 并且 l--,否则 r++。

#2 看完代码随想录之后的想法  

本题的双指针又称滑动窗口。

移动窗口需要考虑的问题:

- 窗口内是什么?

- 如何移动窗口的起始位置?如果窗口内大于target了,起始位置移动。

- 如何移动窗口的结束位置?从起始位置之后移动。

首先要思考 如果用一个for循环,那么应该表示 滑动窗口的起始位置,还是终止位置。如果只用一个for循环来表示 滑动窗口的起始位置,那么如何遍历剩下的终止位置?此时难免再次陷入 暴力解法的怪圈。所以 只用一个for循环,那么这个循环的索引,一定是表示 滑动窗口的终止位置。

#3 收获   

不同于二分搜索, which需要array是有序的,滑动窗口并没有这个要求,不是说看到非有序就不能用了,双指针并没有这个限制。同时,这种做法的 time complexity will be O(N), where ‘N’ is the number of fruits in the input array. The outer for loop runs for all characters, and the inner while loop processes each character only once; therefore, the time complexity of the algorithm will be O(N+N), which is asymptotically equivalent to O(N).

#4 类似题目  

904.水果成篮(opens new window) 和159. Longest Substring with At Most Two Distinct Characters 也是sliding window解决,一开始用了while来做,感觉会比较messy,用for循环内套 while 反而更加的干净和简单。

这两道 sliding window 都是要求 window 内部满足某种条件,并且 window 中 element 数量最多/最少。

76.最小覆盖子串(opens new window)。同上,sliding window的条件是 every character in t (including duplicates) is included in the window,需要返回的是最小的 window长度,和前两道题型几乎一模一样。但是本题需要注意的是如何判断是否包含 t 中的所有元素,这是比较 tricky 的,我一开始试图暴力循环但是会超时。最后解决办法是用一个新的变量 missing 来判断是否全部包含。(438和567 也是类似题)

59.螺旋矩阵II 

Given a positive integer n, generate an n x n matrix filled with elements from 1 to n2 in spiral order.

#1 自己看到题目的第一想法 

没有太大的技术含量,但是写起来不容易。

#2 看完代码随想录之后的想法   

对于这种问题,一定要首先确认左闭右开还是左闭右闭并且在做题过程中牢记这一点就不会越做越乱!

#3 收获    

不加强了左闭右开还是左闭右闭的重要性。

#4 类似题目 

54. Spiral Matrix

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容