2654.go 560 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package B
  2. func minOperations(nums []int) int {
  3. n, gcdAll, cnt1 := len(nums), 0, 0
  4. for _, x := range nums {
  5. gcdAll = gcd(gcdAll, x)
  6. if x == 1 {
  7. cnt1++
  8. }
  9. }
  10. if gcdAll > 1 {
  11. return -1
  12. }
  13. if cnt1 > 0 {
  14. return n - cnt1
  15. }
  16. minSize := n
  17. for i := range nums {
  18. g := 0
  19. for j, x := range nums[i:] {
  20. g = gcd(g, x)
  21. if g == 1 {
  22. // 这里本来是 j+1,把 +1 提出来合并到 return 中
  23. minSize = min(minSize, j)
  24. break
  25. }
  26. }
  27. }
  28. return minSize + n - 1
  29. }
  30. func gcd(a, b int) int {
  31. for a != 0 {
  32. a, b = b%a, a
  33. }
  34. return b
  35. }
备用站点 当前处于降级运行的备用站点,仅供应急访问,数据和功能可能不是最新。