目录
1. 747. 至少是其他数字两倍的最大数
数组中次大值的求法
代码:
int dominantIndex(int* nums, int numsSize) {
int max1 = -1, max2 = -1;
int index = -1;
// 注意次大值max2的求法
for (int i = 0; i < numsSize; i++)
{
if (nums[i] > max1)
{
max2 = max1;
max1 = nums[i];
index = i;
}
else if (nums[i] > max2)
{
max2 = nums[i];
}
}
return max1 >= max2 * 2 ? index : -1;
}
2. 349. 两个数组的交集
哈希表的运用
代码:
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
// 哈希表的简单运用
int hash_arr[1001]={0};
int minisize=nums1Size>nums2Size?nums2Size:nums1Size;
int* result=(int*)malloc(sizeof(int)*minisize);
int index=0;
for(int i=0;i<nums1Size;i++)
{
hash_arr[nums1[i]]=1;
}
for(int j=0;j<nums2Size;j++)
{
if(hash_arr[nums2[j]]==1)
{
result[index]=nums2[j];
index++;
hash_arr[nums2[j]]--;
}
}
*returnSize=index;
return result;
}