怎么样电脑有双重指针(第 2 天 双指针)
977.有序数组的平方
给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例1:
输入:nums=[-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为[16,1,0,9,100]
排序后,数组变为[0,1,9,16,100]
示例2:
输入:nums=[-7,-3,2,3,11]
输出:[4,9,9,49,121]
提示:
1<= nums.length <= 104
-104<= nums[i] <= 104
nums已按非递减顺序排序
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
Swift
importUIKit
classSolution{
funcsortedSquares(_nums:[Int])->[Int]{
guard!nums.isEmptyelse{
return[]
}
varresult=[Int](repeating:0,count:nums.count)
varleft=0,right=nums.count-1
varlastIndex=nums.count-1
whileleft<= right {
ifabs(nums[left])>=abs(nums[right]){
result[lastIndex]=nums[left]*nums[left]
left+=1
}else{
result[lastIndex]=nums[right]*nums[right]
right-=1
}
lastIndex-=1
}
returnresult
}
}
print(Solution().sortedSquares([-4,-1,0,3,10]))
189.轮转数组
给你一个数组,将数组中的元素向右轮转k个位置,其中k是非负数。
示例1:
输入:nums=[1,2,3,4,5,6,7],k=3
输出:[5,6,7,1,2,3,4]
解释:
向右轮转1步:[7,1,2,3,4,5,6]
向右轮转2步:[6,7,1,2,3,4,5]
向右轮转3步:[5,6,7,1,2,3,4]
示例2:
输入:nums=[-1,-100,3,99],k=2
输出:[3,99,-1,-100]
解释:
向右轮转1步:[99,-1,-100,3]
向右轮转2步:[3,99,-1,-100]
提示:
1<= nums.length <= 105
-231<= nums[i] <= 231 - 1
0<= k <= 105
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
Swift
classSolution{
funcrotate(_nums:inout[Int],_k:Int){
lettempIndex=k%nums.count
nums.reverse()
nums[0..< tempIndex].reverse()
nums[tempIndex..< nums.count].reverse()
}
}
varnums=[1,2,3,4,5,6,7]
Solution().rotate(&nums,3)
print(nums)