搜狗编程题两道AC
第一道,直接暴力判断,从最大的[0,n-1]开始判断
第二道,先算出2到最大偶数之间所有的素数,存放在数组中,是素数为1,不是为0,然后计算两两之间素数的个数,AC71%且时间复杂度过高,改进“计算两两之间的素数 ”O(N^2),改成O(N),对第i个偶数,需要判断左右的个数,然后相乘,具体见下面例子, AC71%但没有复杂度问题,接着搞了半天也没有进展,最后几分钟把int改成long long,AC100%。
例子:4 * 6 * * 12
星号代表素数,星号依次为5,7,11
对于第一个星号,会被4计算两次,因为4的右边有两个数6和12,左边就4一个数,所以有1 * 1 * 2(leftCnt *
startCnt * rightCnt)
对于后两个星号,会被左边的4和6这两个数各计算一次,右边就12一个数,所以有2 * 2 * 1(leftCnt *
startCnt * rightCnt )