【每日刷题】Day79
🥕个人主页:开敲🍉
🔥所属专栏:每日刷题🍍
🌼文章目录🌼
1. 1619. 删除某些元素后的数组均值 - 力扣(LeetCode)
2. 1365. 有多少小于当前数字的数字 - 力扣(LeetCode)
3. 3099. 哈沙德数 - 力扣(LeetCode)
1. 1619. 删除某些元素后的数组均值 - 力扣(LeetCode)
//思路:排序。
//将数组排为升序,计算需要删除的元素个数。
//记数排序
void CountSort(int* arr,int size)
{
int max = -1;
int min = 1000000;
for(int i = 0;i<size;i++)
{
if(arr[i]>max)
max = arr[i];
if(arr[i]<min)
min = arr[i];
}
int* tmp = (int*)calloc(max-min+1,sizeof(int));
int count = 0;
for(int i = 0;i<size;i++)
{
tmp[arr[i]-min]+=1;
}
for(int i = 0;i<max-min+1;i++)
{
while(tmp[i])
{
arr[count++] = i+min;
tmp[i]--;
}
}
}
double trimMean(int* arr, int arrSize)
{
double ans = 0;
CountSort(arr,arrSize);
for(int i = arrSize*0.05;i<arrSize-arrSize*0.05;i++)
{
ans+=arr[i];
}
return ans/(arrSize-2*arrSize*0.05);
}
2. 1365. 有多少小于当前数字的数字 - 力扣(LeetCode)
//思路:二次遍历。
int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize)
{
int* ans = (int*)malloc(sizeof(int)*numsSize);
int count = 0;
for(int i = 0;i<numsSize;i++)
{
int flag = 0;
for(int j = 0;j<numsSize;j++)
{
if(nums[j]<nums[i])
flag++;
}
ans[count++] = flag;
}
*returnSize = count;
return ans;
}
3. 3099. 哈沙德数 - 力扣(LeetCode)
//思路:循环。
int sumOfTheDigitsOfHarshadNumber(int x)
{
int tmp = x;
int num = 0;
while(tmp)
{
num+=tmp%10;
tmp/=10;
}
if(x%num)
return -1;
return num;
}