diff --git a/25/11/1513.cpp b/25/11/1513.cpp new file mode 100644 index 0000000..0e7f280 --- /dev/null +++ b/25/11/1513.cpp @@ -0,0 +1,20 @@ +#include + + +int numSub(std::string s) { + int count = 0; + long ans = 0; + int mod = 1e9+7; + int n = s.length(); + for(int i = 0;i + +int maxOperations(std::string s) { + int countOne = 0; + int ans = 0; + for (int i = 0; i < s.length(); i++) { + if (s[i] == '0') { + while ((i + 1) < s.length() && s[i + 1] == '0') { + i++; + } + ans += countOne; + } else { + countOne++; + } + } + return ans; +} \ No newline at end of file diff --git a/25/11/go/2654.go b/25/11/go/2654.go new file mode 100644 index 0000000..661ae43 --- /dev/null +++ b/25/11/go/2654.go @@ -0,0 +1,38 @@ +package B + +func minOperations(nums []int) int { + n, gcdAll, cnt1 := len(nums), 0, 0 + for _, x := range nums { + gcdAll = gcd(gcdAll, x) + if x == 1 { + cnt1++ + } + } + if gcdAll > 1 { + return -1 + } + if cnt1 > 0 { + return n - cnt1 + } + + minSize := n + for i := range nums { + g := 0 + for j, x := range nums[i:] { + g = gcd(g, x) + if g == 1 { + // 这里本来是 j+1,把 +1 提出来合并到 return 中 + minSize = min(minSize, j) + break + } + } + } + return minSize + n - 1 +} + +func gcd(a, b int) int { + for a != 0 { + a, b = b%a, a + } + return b +}