算法训练营第十四天|18. 四数之和
建议 要比较一下本题和 454.四数相加II 的区别为什么 454.四数相加II 会简单很多这个想明白了对本题理解就深刻了。 本题 思路整体和 三数之和一样的都是双指针但写的时候 有很多小细节需要注意建议先看视频。题目链接https://leetcode.cn/problems/4sum/视频讲解https://www.bilibili.com/video/BV1DS4y147US今日收获这题难度还是有的要细细理解思路理解很关键代码写起来并不简单很多细节需要注意很有挑战性的题目真的很难理解题意非常重要加油intcomp(constvoid*a,constvoid*b){return*(int*)a-*(int*)b;}int**fourSum(int*nums,intnumsSize,inttarget,int*returnSize,int**returnColumnSizes){int**quadrupletsmalloc(sizeof(int*)*1001);*returnSize0;*returnColumnSizesmalloc(sizeof(int)*1001);if(numsSize4)returnquadruplets;qsort(nums,numsSize,sizeof(int),comp);intlengthnumsSize;for(inti0;ilength-3;i){if(i0nums[i]nums[i-1])continue;if((long)nums[i]nums[i1]nums[i2]nums[i3]target)break;if((long)nums[i]nums[length-3]nums[length-2]nums[length-1]target)continue;for(intji1;jlength-2;j){if(ji1nums[j]nums[j-1])continue;if((long)nums[i]nums[j]nums[j1]nums[j2]target)break;if((long)nums[i]nums[j]nums[length-2]nums[length-1]target)continue;intleftj1,rightlength-1;while(leftright){longsum(long)nums[i]nums[j]nums[left]nums[right];if(sumtarget){int*tmpmalloc(sizeof(int)*4);tmp[0]nums[i],tmp[1]nums[j],tmp[2]nums[left],tmp[3]nums[right];(*returnColumnSizes)[(*returnSize)]4;quadruplets[(*returnSize)]tmp;while(leftrightnums[left]nums[left1])left;left;while(leftrightnums[right]nums[right-1])right--;right--;}elseif(sumtarget)left;elseright--;}}}returnquadruplets;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2548385.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!