leetcode 3495. 使数组元素都变为零的最少操作次数-C语言
代码思路见下图:
注意:最后计算的操作次数较大,用long long类型。可从给出的接口返回值看出
long long GetCnt(int *query) {int a = log(query[0])/log(4);int b = log(query[1])/log(4);int cur = query[0];// printf("%d %d\n", a, b);long long res = 0;for(int i=a+1; i<=b; i++) {res += ((long long)(1 << (2*(i)))-cur)*(i);cur = (1 << (2*(i)));// printf("res:%ld %d\n", res, cur);}res += (long long)(query[1]-cur+1)*(b+1);// printf("res:%ld\n", res);return res;
}
long long minOperations(int** queries, int queriesSize, int* queriesColSize) {long long res = 0;for(int i=0; i<queriesSize; i++) {long long num = GetCnt(queries[i]);res += num/2+num%2;}return res;
}