【数组】——有序数组的平方
暴力解法:先平方后排序
时间复杂度\(O(n+nlogn)=O(nlogn)\)
# 力扣运行出错,但测试可用
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
i=0
size=len(nums)
# 平方
while i<size:
nums[i]=nums[i] ** 2
i+=1
# 冒泡排序
for j in range(len(nums)-1):
for k in range(len(nums)-j-1):
if nums[k] > nums[k + 1]:
nums[k], nums[k + 1] = nums[k + 1], nums[k]
return nums
双指针法:
1.设置起始指针i和终止指针j,新建B数组和指向B数组终止位置的指针k
2.比较i和j元素大小,大的放入k元素位置,该i(j)指针和k指针继续移动
3.结束条件为i<=j!
时间复杂度为\(O(n)\)
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
size=len(nums)
i,j,k=0,size-1,size-1
res=[-1]*size
while i<=j:
if nums[i]**2 < nums[j]**2:
res[k]=nums[j]**2
j-=1
else: # 注意,只有两种情况,不需要用elif另外判断(不是很明白)
res[k]=nums[i]**2
i+=1
k-=1
return res
标签:平方,数组,nums,int,List,有序,指针,size
From: https://www.cnblogs.com/z-qhhh/p/17099767.html