周赛:分割数组使乘积互质
C/C++会超时,JAVA就过了
int gcd(int a, int b) { if (a % b == 0) { return b; } else return gcd(b, a % b); } int max (int a, int b) { return a > b ? a : b; } int findValidSplit(int* nums, int numsSize){ int n = numsSize; int l = 0, r = 1; while (l < r) { for (int i = n-1; i >= r; i--) { if (gcd(nums[i], nums[l]) != 1) { r = max(r, i); break; } } l++; } if (r > n - 2) return -1; else return l; }
class Solution { public: int gcd(int a, int b) { if (a % b == 0) { return b; } else return gcd(b, a % b); } public: int findValidSplit(vector<int>& nums) { int n = nums.size(); int l = 0, r = 1; while (l < r) { for (int i = n-1; i >= r; i--) { if (gcd(nums[i], nums[l]) != 1) { r = max(r, i); break; } } l++; } if (r > n - 2) return -1; else return l; } };
class Solution { public int gcd(int a, int b) { if (a % b == 0) { return b; } else return gcd(b, a % b); } public int findValidSplit(int[] nums) { int n = nums.length; int l = 0, r = 1; while (l < r) { for (int i = n-1; i >= r; i--) { if (gcd(nums[i], nums[l]) != 1) { r = Math.max(r, i); break; } } l++; } if (r > n - 2) return -1; else return l; } }