解法一:模拟
func moveZeroes(nums []int) {
n:=len(nums)
l,r:=0,1
for r<n&&l<n{
if nums[r]==0{
if nums[l]!=0{
l++
r++
}else{
r++
}
}else if nums[l]==0{
nums[l],nums[r]=nums[r],nums[l]
l++
r++
}else{
l++
r++
}
}
}
二.双指针
func moveZeroes(nums []int) {
n:=len(nums)
j:=0
for i:=0;i<n;i++{
if nums[i]!=0{
nums[j]=nums[i]
j+=1
}
}
for i:=j;i<n;i++{
nums[i]=0
}
}
解法一:暴力排序
func sortedSquares(nums []int) []int {
n:=len(nums)
for i:=0;i<n;i++{
nums[i]=nums[i]*nums[i]
}
sort.Ints(nums)
return nums
}
解法二:双指针
func sortedSquares(nums []int) []int {
n:=len(nums)
k:=n-1
res:=make([]int,n)
l,r:=0,n-1
for l<=r{
if nums[l]+nums[r]<0{
res[k]=nums[l]*nums[l]
k-=1
l++
}else{
res[k]=nums[r]*nums[r]
k-=1
r--
}
}
return res
}