Skip to content

How to Circularly Sort an Array in Golang

The challenge

An array is circularly sorted if the elements are sorted in ascending order but displaced, or rotated, by any number of steps.

Complete the function/method that determines if the given array of integers is circularly sorted.

Examples:

These arrays are circularly sorted (true):

[2, 3, 4, 5, , 1] --> [, 1] + [2, 3, 4, 5] [4, 5, 6, 9, 1] --> [1] + [4, 5, 6, 9] [10, 11, 6, 7, 9] --> [6, 7, 9] + [10, 11] [1, 2, 3, 4, 5] --> [1, 2, 3, 4, 5] [5, 7, 43, 987, -9, ] --> [-9, ] + [5, 7, 43, 987] [1, 2, 3, 4, 1] --> [1] + [1, 2, 3, 4]
Code language: Go (go)

While these are not (false):

[4, 1, 2, 5] [8, 7, 6, 5, 4, 3] [6, 7, 4, 8] [7, 6, 5, 4, 3, 2, 1]
Code language: Go (go)

The solution in Golang

Option 1:

package solution func IsCircleSorted(r []int) bool { downs := for i:= ; i<len(r); i ++ { if r[i] > r[(i+1)%len(r)] { downs += 1} } return downs <= 1 }
Code language: Go (go)

Option 2:

package solution import "sort" func IsCircleSorted(r []int) bool { q := make([]int, len(r)) for i := ; i < len(r); i++ { for j := ; j < len(r); j++ { q[j] = r[(j+i)%len(r)] } if sort.IntsAreSorted(q) { return true } } return len(r) == }
Code language: Go (go)

Option 3:

package solution func IsCircleSorted(r []int) bool { if len(r) == { return true } decreaseCount := for i := 1; i < len(r); i++ { if r[i-1] > r[i] { decreaseCount++ } } if r[len(r)-1] > r[] { decreaseCount++ } return decreaseCount <= 1 }
Code language: Go (go)

Test cases to validate our solution

package solution_test import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Example Tests",func() { It("Test 1",func() {Expect(IsCircleSorted([]int{2,3,4,5,6})).To(Equal(true))}) It("Test 2",func() {Expect(IsCircleSorted([]int{6,2,3,4,5})).To(Equal(true))}) It("Test 3",func() {Expect(IsCircleSorted([]int{3,2,4,5,6})).To(Equal(false))}) })
Code language: Go (go)

See also  How to Check for Prime Numbers using Golang
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x