leetcode_数据结构练习
数组与字符串
寻找数组的中心索引
题目链接
循环定位位置,内部对位置左右求和判断
出错:循环内部未对左右累计变量(l和r)置零导致累加变量是在上一次的基础上进行的。
正确代码
#include<stdio.h>
int pivotIndex(int* nums, int numsSize)
{
int i,l=0,r=0,n;
for(i=0;i<numsSize;i++)
{l=r=0;
for(n=0;n<i;n++)
l+=nums[n];
for(n=i+1;n<numsSize;n++)
r+=nums[n];
if(l==r) return i;
}
return -1;
}
void main()
{
int nums[6]={1,7,3,6,5,6};
int n;
n=pivotIndex(nums,6);
printf("%d",n);
}
至少是其他数字两倍的最大数
题目链接
先找出最大值,在判断是否符合情况
#include<stdio.h>
int dominantIndex(int* nums, int numsSize){
int i,maxnum,maxnum_n,r=0;
maxnum=nums[0];
maxnum_n=0;
for(i=1;i<numsSize;i++)
if(nums[i]>maxnum)
{
maxnum=nums[i];
maxnum_n=i;
}
for(i=0;i<numsSize;i++)
{
if(i!=maxnum_n)
if(nums[i]*2>maxnum)
r=-1;
}
if(r==-1) return -1;
else return maxnum_n;
}
void main()
{
int i,f;
int n[4]={4,8,1,-1};
int m[4]={1,2,3,4};
int s[4]={2,3,7,0};
i=dominantIndex( n , 4 );
for(f=0;f<4;f++)
printf("%d ",n[f]);
printf("\n位置:%d\n",i);
i=dominantIndex( m , 4 );
for(f=0;f<4;f++)
printf("%d ",n[f]);
printf("\n位置:%d\n",i);
i=dominantIndex( s , 4 );
for(f=0;f<4;f++)
printf("%d ",n[f]);
printf("\n位置:%d\n",i);
}
结果: