目录
977.有序数组的平方
思路:
1.用双指针从两端开始比较平方的大小(比绝对值大小略慢一点
2.插入列表中,这里有多种办法,一种是直接append尾部插入,还有种是用index(0, x)头部插入,显然第一种快,还有一种是先设置数组为len(nums)个0,修改的时候直接对对应索引的元素进行修改,这种相对前面两种更快
代码:
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
left, right = 0, len(nums) - 1
ls = [0] * (right + 1)
i = right
while i >= 0:
x = nums[left] ** 2
y = nums[right] ** 2
if x >= y:
ls[i] = x
left += 1
else:
ls[i] = y
right -= 1
i -= 1
return ls
189.轮转数组
189. 轮转数组 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/rotate-array/
思路:
1.比较类似于上次的旋转链表,要先算出实际的次数,因为实际实际的反转次数是数组长度n对k去余
2.旋转后将后n-k项拼接到前面即可,注意不是nums= 而是nums[:]=
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
# 想起来链表的那题了, 循环k次必超时
n = len(nums)
k = k % n # 实际次数
# 实际是最后k个和前面的换位置
nums[:] = nums[n - k:] + nums[:n - k]
以上
坚持 共勉