暴力求解法:
注意:需要确定范围,比如nums.sort()是在for循环之外,根据函数的功能来确定
return返回的是nums,而不是nums[i]因为返回的是整个数组
python
class Solution(object):
def sortedSquares(self, nums):
for i in range (len(nums)):
nums[i]=nums[i]*nums[i]
nums.sort()
return nums
python中切片的语法规则
python
#list[起始索引:结束索引]切片时包含起始索引位置的元素,但不包含结束索引位置的元素
# 索引为 0表示第一个,1表示第二个,-1表示最后一个,-2表示倒数第二个
# list[-1]:返回最后一个数据
# list[:1]:返回0到1的数据,故返回第一个数据
# list[1:]:返回从1到0的数据,故返回第二个到最后一个的数据(不包含结束索引位置0)
# list[-1:]:返回从-1到0的数据,故返回最后一个数据
# list[:-1]:返回从0到-1的数据,故返回第一个到倒数第二个的数据(不包含结束索引位置-1)
# list[::1]:表示步长为1,步长大于0时,返回序列为原顺序;。
# list[::-1]: 表示从右往左以步长为1进行切片。步长小于0时,返回序列为倒序
# list[::2]: 表示从左往右步长为2进行切片
list = [1, 2, 3, 4, 5]
print(list[-1]) # 5
print(list[:1]) # [1]
print(list[1:]) # [2, 3, 4, 5]
print(list[-1:]) # [5]
print(list[:-1]) # [1, 2, 3, 4]
print(list[::1]) # [1, 2, 3, 4, 5]
print(list[::-1]) # [5, 4, 3, 2, 1]
print(list[::2]) # [1, 3, 5]
双指针+反转列表法:
注意:创建空列表的语法格式,以及abs表示绝对值;写完之后可以带入数组挨着挨着验证
python
class Solution():
def sortedSquares(self,nums):
left=0
right=len(nums)-1
new_list=[]
while left<=right:
if abs(nums[left])<=abs(nums[right]):
new_list.append(nums[right]**2)
right-=1
else:
new_list.append(nums[left]**2)
left+=1
return new_list[::-1]