我发现暴力破解实际上也是需要一种需要锻炼的能力()
问题:
给定一个大小为 n
的数组 nums
,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
下面是纯暴力解法
int majorityElement(int* nums, int numsSize) {
// int count[numsSize] = {0};
int* count = (int*)malloc(numsSize * sizeof(int));
for(int i = 0; i < numsSize; i++){
count[i] = 0;
for(int j = i; j < numsSize; j++){
if(nums[i] == nums[j]){
count[i]++;
}
}
}
for(int i = 0; i < numsSize; i++){
if(count[i] > numsSize/2){
return nums[i];
}
}
return -1;
}
经验:
1.在C语言中,数组的长度不能是变量,也就是说,int count[numsSize]
这种形式在C语言中是不被允许的。
2.使用int* count = (int*)malloc(numsSize * sizeof(int));要注意 malloc
分配的内存空间的初始内容是未定义的,所以要注意做好初始化,可以使用 memset函数
memset(count,0,numsSize * sizeof(int));
不过果然,哈哈哈,不过我真的觉得暴力破解是要练习的。