周赛:分割数组使乘积互质

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;
    }
}

全部评论
c++复杂度小高,最坏好像O(n*n)
点赞 回复 分享
发布于 2023-03-07 09:25 湖北

相关推荐

06-11 15:52
东南大学 C++
问了一下hr,这个回答是G了吗
椛鸣:我遇到过 我给你翻一下 对不起 我之前把你当备胎了 现在我人已经招满了 ***吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务