397.integer-replacement.go 249 B

1234567891011121314151617
  1. func integerReplacement(n int) (cnt int) {
  2. for n&1 == 0 {
  3. cnt++
  4. n >>= 1
  5. }
  6. if n == 1 {
  7. return
  8. }
  9. return cnt + 1 + minInt(integerReplacement(n-1), integerReplacement(n+1))
  10. }
  11. func minInt(x, y int) int {
  12. if x < y {
  13. return x
  14. }
  15. return y
  16. }