Skip to content

Commit

Permalink
feat(leetcode/medium/2436-minimum-split-into-subarrays-with-gcd-great…
Browse files Browse the repository at this point in the history
…er-than-one.go)
  • Loading branch information
polyglotm committed Nov 9, 2022
1 parent 81216b7 commit cd9eace
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
2383-minimum-hours-of-training-to-win-a-competition
leetcode/easy/2383. Minimum Hours of Training to Win a Competition
leetcode/medium/2383. Minimum Hours of Training to Win a Competition
URL: https://leetcode.com/problems/minimum-hours-of-training-to-win-a-competition/
*/

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
2436-minimum-split-into-subarrays-with-gcd-greater-than-one
leetcode/medium/2436. Minimum Split Into Subarrays With GCD Greater Than One
URL: https://leetcode.com/problems/minimum-split-into-subarrays-with-gcd-greater-than-one/
*/

package main

import "fmt"

func gcd(a, b int) int {
if b == 0 {
return a
}
return gcd(b, a%b)
}

func minimumSplits(nums []int) int {
res := 0
gcdUnit := 1

for _, num := range nums {
gcdUnit = gcd(gcdUnit, num)

if gcdUnit == 1 {
res++
gcdUnit = num
}
}

return res
}

func main() {
nums := []int{12, 6, 3, 14, 8}
fmt.Println(minimumSplits(nums))
//Output: 2

nums = []int{4, 12, 6, 14}
fmt.Println(minimumSplits(nums))
//Output: 1

nums = []int{1981402, 28730329, 23776824,
90153791, 97088698, 18823319,
30711731, 68358369, 4953505,
75293276, 93125894, 97088698,
7302764, 8881740, 17171364,
13618668, 59930520}
fmt.Println(minimumSplits(nums))
// 2
}

0 comments on commit cd9eace

Please sign in to comment.