64,077
社区成员
发帖
与我相关
我的任务
分享
补一下前面的题目
bool checkXMatrix(int** grid, int gridSize, int* gridColSize){
int n = gridSize;
int flag = 0;
for(int i = 0; i < n; ++i){
if(!grid[i][i] || !grid[i][n - 1 - i]){
flag = 1;
break;
}
for(int j = 0; j < n; ++j){
if(j != i && j != n - 1 - i){
if(grid[i][j]){
flag = 1;
break;
}
}
}
if(flag) break;
}
return !flag;
}
暴力法
char ** findRestaurant(char ** list1, int list1Size, char ** list2, int list2Size, int* returnSize)
{
int min = INT_MAX;
char **returnStrs = (char **)malloc(sizeof(char *) *(list1Size + list2Size));
for(int i = 0; i < list1Size; ++i){
for(int j = 0; j < list2Size; ++j){
if(strcmp(list1[i], list2[j]) == 0){
if(i + j < min){
min = i + j;
*returnSize = 0;
returnStrs[*returnSize] = list1[i];
*returnSize = *returnSize + 1;
}
else if((i + j) == min){
returnStrs[*returnSize] = list1[i];
*returnSize = *returnSize + 1;
}
}
}
}
return returnStrs;
}
双指针
int findLengthOfLCIS(int* nums, int numsSize){
int l = 0, r = 0;
int max = 1, flag = 1;
while(l < numsSize - 1){
r = l;
while(r < numsSize - 1 && nums[r] < nums[r + 1]) ++r;
max = fmax(r - l + 1, max);
l = r + 1;
}
return max;
}
注意本身数组长度有限,需要新开数组操作
int* addToArrayForm(int* num, int numSize, int k, int* returnSize){
int* ret = (int*)malloc(sizeof(int) * 10001);
for(int i = 0; i < numSize; ++i){
ret[i] = num[i];
}
ret[numSize - 1] += k;
for(int i = numSize - 1; i > 0; --i){
if(ret[i] >= 10){
ret[i - 1] += ret[i] / 10;
ret[i] %= 10;
}
}
*returnSize = numSize;
while(ret[0] >= 10){
for(int i = *returnSize - 1; i >= 0; --i){
ret[i + 1] = ret[i];
}
ret[0] = ret[1] / 10;
ret[1] %= 10;
++*returnSize;
}
return ret;
}