【万人千题】算法11.24解题报告
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,可以不用像我这样,题解的会比我好太多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了