1,88. 合并两个有序数组 - 力扣(LeetCode) (leetcode-cn.com)
int cmp(const void*e1,const void*e2)
{
if(*(int*)e1<=*(int*)e2)
return 0;
else
return 1;
}
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
int i=m;
int j=0;
while(i<m+n)
{
nums1[i]=nums2[j];
i++;
j++;
}
qsort(nums1,m+n,sizeof(int),cmp);
}
2,611. 有效三角形的个数 - 力扣(LeetCode) (leetcode-cn.com)
int cmp(const void*e1,const void*e2)
{
if(*(int*)e1>=*(int*)e2)
return 1;
else
return 0;
}
int triangleNumber(int* nums, int numsSize)
{
if(numsSize<3)
return 0;
int count=0;
qsort(nums,numsSize,sizeof(int),cmp);
if(numsSize==3)
{
if(nums[0]+nums[1]>nums[2])
return 1;
else
return 0;
}
int i=0;
int flag=0;
int max=numsSize-1;
for(i=0;i<numsSize-2;i++)
{
if(nums[i]==0)
continue;
int j=i+1;
//int max=numsSize-1;
max=numsSize-1;
int flag=0;
for(j=i+1;j<numsSize-1;j++)
{
//max=numsSize-1;
if(flag==0)
{
while(nums[j]+nums[i]<=nums[max]&&max>j)
{
max--;
}
//flag++;
}
else
{
while(nums[j]+nums[i]>nums[max]&&max<numsSize-1)
{
max++;
}
if(nums[j]+nums[i]>nums[numsSize-1])
max=numsSize-1;
}
if(flag==0)
{
count+=max-j;
flag++;
}
else
{
if(nums[j]+nums[i]>nums[numsSize-1])
count+=max-j;
else
{
if(max==j)
count+=0;
else
count+=max-j-1;
}
}
if(flag==1)
{
if(max==j)
max++;
flag++;
}
}
}
return count;
}
第二道题emmmmm,可以不用像我这样,题解的会比我好太多。