Skip to content

Instantly share code, notes, and snippets.

@sanan-fataliyev
Created July 17, 2020 22:40
Show Gist options
  • Select an option

  • Save sanan-fataliyev/64ac798483f846f4f49c64c131819233 to your computer and use it in GitHub Desktop.

Select an option

Save sanan-fataliyev/64ac798483f846f4f49c64c131819233 to your computer and use it in GitHub Desktop.
// an in-place solution of Squares of a Sorted Array problem
// https://leetcode.com/problems/squares-of-a-sorted-array/
func sortedSquares(A []int) []int {
// [-3,-2,0, 1, 2]
size := len(A)
for i := 0; i < size; i++ {
A[i] *= A[i]
}
if size < 2 {
return A
}
midi := 0
for midi < size-1 && A[midi] >= A[midi+1] {
midi++
}
// [9, 4, 0, 1, 4]
for i := 0; i < (midi+1)/2; i++ {
A[i], A[midi-i] = A[midi-i], A[i]
}
// [0, 5, 9, 1, 4]
// ^ ^
for ri := size - 1; ri > midi; ri-- {
if A[midi] <= A[ri] {
continue
}
last := A[ri]
A[ri] = A[midi]
li := midi
for li > 0 && A[li-1] > last {
A[li] = A[li-1] // move right
li--
}
A[li] = last
}
return A
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment