目录
第1题:至少是其他数字两倍的最大数
第2题:寻找数组的中心下标
第3题:字符个数统计
第4题:多数元素
第5题:自除数
第1题:至少是其他数字两倍的最大数
题目要求:
代码实现:
int dominantIndex(int* nums, int numsSize)
{
int i = 0;
int max = 0;
int count=0;
int y = 0;
for(i=0;i<numsSize;i++)
{
scanf("%d",&nums[i]);
if(nums[i]>max)
{
max=nums[i];
y=i;//记录下标
}
}
for(i=0;i<numsSize;i++)
{
if(nums[i]==max)
{
continue;
}
else
{
if(max>2*nums[i]||max==2*nums[i])
count++;
}
}
if(count==numsSize-1)
{
return y;
}
else if(numsSize==1)
{
return 0;
}
else
{
return -1;
}
}
第2题:寻找数组的中心下标
题目要求:
代码实现:
法一:
int pivotIndex(int* nums, int numsSize)
{
int i = 0;
int left = 0;
int sum = 0;
for(int i = 0;i<numsSize;i++)
{
scanf("%d",&nums[i]);
sum+=nums[i];
}
for(int i = 0;i<numsSize;i++)
{
if(left*2+nums[i]==sum)
{
int y = i;
return y;
}
else
{
left+=nums[i];
}
}
return -1;
}
法二:
int pivotIndex(int* nums, int numsSize) {
for (int i = 0; i < numsSize; i++) {
int left = 0;
int right = numsSize - 1;
int l_sum = 0, r_sum = 0;
while (left < i) {
l_sum += nums[left];//求左边和
left++;
}
while (right > i) {
r_sum += nums[right];//求右边和
right--;
}
if (l_sum == r_sum) {
return i;
}
}
return -1;
}
第3题:字符个数统计
题目要求:代码实现:
#include <stdio.h>
#include <string.h>
int main()
{
char str[500]={0};
int num[128]={0};
int count = 0;
scanf("%s",str);
int len = strlen(str);
for(int i = 0;i<len;i++)
{
if(num[(int)str[i]]==0)
{
num[(int)str[i]]=1;
count++;
}
}
printf("%d\n",count);
return 0;
}
第4题:多数元素
题目要求:
代码实现:
int majorityElement(int* nums, int numsSize)
{
//诸王争霸,我方人口占总人口的n/2以上,所有人实力相当
int num = nums[0];//第一位霸王是我方的
int cnt = 0;//目前我方一人,遍历下去
for (int i = 0; i < numsSize; i++)//从第1位开始
{
if (num == nums[i])//如果是给我方撑腰的就+1
{
cnt++;
}
else
{
cnt--;//不是给我方撑腰的就-1
if (cnt == 0) //没有人撑腰换霸主
{
num = nums[i + 1];
cnt = 0;
}
}
}
return num;
}
第5题:自除数
题目要求:
代码实现:
int* selfDividingNumbers(int left, int right, int* returnSize)
{
int* P = (int*)malloc(sizeof(int) * (right - left + 1));//开辟空间
int cnt = 0;
int sum = 0;
for(int i = left;i<=right;i++)
{
int tmp = i;
while(tmp)
{
if((tmp%10==0)||(i%(tmp%10)!=0))
{
break;//不是自除数
}
else
{
tmp/=10;
}
}
if(tmp==0)
{
cnt++;
P[sum++]=i;
}
}
*returnSize = cnt;
return P;
}
欢迎指正!