C语言 | Leetcode C语言题解之第15题三数之和

news/发布时间2024/7/21 23:53:50

题目:

题解:

int cmp(const void *x, const void *y)
{return *(int*)x - *(int*)y;
}
//判断重复的三元组
bool TheSame(int a, int b, int c, int **ans, int returnSize)
{bool ret = true;for(int i = 0;i < returnSize;++i){if(a == ans[i][0] && b == ans[i][1] && c == ans[i][2]){ret = false;break;}}return ret;
}
int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes)
{//给nums排序,以便去除重复元素,时间O(nlogn)到O(n2)之间qsort(nums, numsSize, sizeof(int), cmp);//最多可能的三元组数// double maxRoom = 1;//ans行大小初始化*returnSize = 0;//特判if(numsSize < 3) return NULL;//计算maxRoom,用组合的思想// maxRoom = (numsSize) * (numsSize - 1) * (numsSize - 2);// maxRoom /= 6;//分配返回数组内存int **ans = (int**)calloc(20000, sizeof(int*));//取一个元素为中间元素,不能取头尾,时间:O(n2)for(int i = 0, left = 1, right = numsSize - 1;i < numsSize - 2 && nums[i] <= 0;++i){//初始化left = i + 1;right = numsSize - 1;//第一个数定下来之后,双指针法遍历第二和第三个数,时间:O(n)while(left < right){if(nums[i] + nums[left] + nums[right] < 0){++left;}else if(nums[i] + nums[left] + nums[right] > 0){--right;}else//符合条件的三元组找到了{//并且不重复if(TheSame(nums[i], nums[left], nums[right], ans, *returnSize)){ans[(*returnSize)] = (int*)calloc(3, sizeof(int));ans[(*returnSize)][0] = nums[i];ans[(*returnSize)][1] = nums[left];ans[(*returnSize)][2] = nums[right];++(*returnSize);}++left;--right;}}}//申请数组列的内存*returnColumnSizes = (int*)calloc((*returnSize), sizeof(int));//内存赋值3for(int i = 0;i < *returnSize;++i){(*returnColumnSizes)[i] = 3;}return ans;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.shwantai.cn/a/55474605.html

如若内容造成侵权/违法违规/事实不符,请联系万泰站长网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Android匿名共享内存(Ashmem)

在Android中我们熟知的IPC方式有Socket、文件、ContentProvider、Binder、共享内存。其中共享内存的效率最高&#xff0c;可以做到0拷贝&#xff0c;在跨进程进行大数据传输&#xff0c;日志收集等场景下非常有用。共享内存是Linux自带的一种IPC机制&#xff0c;Android直接使用…

【Linux系列】如何确定当前运行的是 RHEL 9 还是 RHEL 8?

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

使用GPT需要注意的事项

GPT出来之后&#xff0c;基本就告别浏览器搜索问题答案了。将问题原封不动的copy给GPT基本可以得到解答。 但是这个也有弊端&#xff0c;那就是太依赖GPT了。 1&#xff0c;使用GPT需要更强的专业知识&#xff1a;除了能问对问题&#xff0c;还要具备识别GPT&q…

烧坏两块单片机,不知道原因?

没有看你的原理图&#xff0c;以下是造成烧毁芯片的几个环节&#xff1a; 1. 最大的可能性是你的单片机电机控制输出与电机驱动电路没有隔离。 我的经验&#xff0c;使用STM32控制电机&#xff0c;无论是直流电机脉宽调制&#xff0c;还是步进电机控制&#xff0c;控制电路与…

【大功率汽车大灯升压方案】LED恒流驱动芯片FP7208升压车灯调光应用,PWM内部转模拟,调光深度1%,无频闪顾虑,低亮无抖动

宝马X5前中排座椅宽大舒适&#xff0c;车厢内储物空间丰富。操控性能极佳&#xff0c;底盘稳扎精良。原车为氙气灯&#xff0c;其实宝马的氙气大灯配的比其他车型要好&#xff0c;照明效果是没得说的。但是不管什么灯久了都会出现光衰的情况。下面这辆宝马X5车灯已老化严重。 宝…

数据结构之栈和队列

1.前言 大家好久不见&#xff0c;这段时间由于忙去了。就没有即使维护我的博客&#xff0c;先给大家赔个不是。 我们还是规矩不乱&#xff0c;先赞后看~ 今天讲的内容是数据结构中非常重要的一个部分&#xff1a;栈和队列。它在今后的学习中也会再次出现&#xff08;c&#…