funcsortedSquares(nums []int) []int { //注意ans []int若长度为0,也就是nil。直接索引将会报错。 //刁钻案例[0],[-5,-3,-2,-1](不能通过查找,非负元素记录下标实现) var ans []int var i int = 0 for i=0;i<len(nums);i++{ if(nums[i]>0) { break } } var pos1,pos2 int = i-1,i i = 0 for pos1>=0&&pos2<len(nums){ if nums[pos1]*nums[pos1]>nums[pos2]*nums[pos2]{ ans = append(ans,nums[pos2]*nums[pos2]) pos2++ }else{ ans = append(ans,nums[pos1]*nums[pos1]) pos1-- } } for pos1>=0{ ans = append(ans,nums[pos1]*nums[pos1]) pos1-- } for pos2<len(nums){ ans = append(ans,nums[pos2]*nums[pos2]) pos2++ } return ans }
代码2
1 2 3 4 5 6 7 8 9 10 11 12 13
funcsortedSquares(A []int) []int { ans := make([]int, len(A)) for i, k, j := 0, len(A)-1, len(ans)-1; i <= j; k-- { if A[i]*A[i] > A[j]*A[j] { ans[k] = A[i] * A[i] i++ } else { ans[k] = A[j] * A[j] j-- } return ans }