《LeetCode力扣练习》第15题 C语言版 (做出来就行,别问我效率。。。。)
库你急哇,哈集美马戏特~~
一题二写,三数之和,题解四瞅五瞄六瞧,水平还七上八下九流,十分辣鸡。
十推九敲,八种思路,用光七情六欲五感,在这里四覆三翻二挠,一拳爆屏。
十赢九输,赢了八千,七百六十五万,打了四个三带二,爽的一批
一天两道,三月打卡,刷的四分五裂六离,现在是七零八落九散,十分难受。
一顿操作猛如虎,点击提交超时了。
二话不说翻题解,评论区里全人才。
反反复复终得道,再次尝试却报错。
——————————————————————————
来自力扣评论区的神评
题目难度还好,主要难在题目要求函数的参数列表中的参数,看不懂看不懂。。。。。
题目:
力扣官方题库
上代码(经过线上OJ测试)
#include <stdio.h>
#include <stdlib.h>
int compareByIncrease(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){
*returnSize=0;
if(numsSize<3)
{
return NULL;
}
int cur=0;
int low=cur+1;
int high=numsSize-1;
int **returnArray=(int **)malloc(sizeof(int *)*numsSize*numsSize);
*returnColumnSizes=(int *)malloc(sizeof(int *)*numsSize*numsSize);
qsort(nums,numsSize,sizeof(int),compareByIncrease);
while((nums[cur]<=0)&&(cur+1<numsSize-1))
{
low=cur+1;
high=numsSize-1;
while(low<high)
{
if((nums[cur]+nums[low]+nums[high])==0)
{
returnArray[*returnSize]=(int *)malloc(sizeof(int)*3);
(*returnColumnSizes)[*returnSize]=3;
returnArray[*returnSize][0]=nums[cur];
returnArray[*returnSize][1]=nums[low];
returnArray[*returnSize][2]=nums[high];
++(*returnSize);
low++;
while(1)
{
if((nums[low]==nums[low-1])&&(low<high))
{
low++;
}
else
{
break;
}
}
high--;
while(1)
{
if((nums[high]==nums[high+1])&&(low<high))
{
high--;
}
else
{
break;
}
}
}
else if((nums[cur]+nums[low]+nums[high])>0)
{
--high;
}
else
{
++low;
}
}
cur++;
while(1)
{
if((nums[cur]==nums[cur-1])&&(cur+1<numsSize-1))
{
cur++;
}
else
{
break;
}
}
}
return returnArray;
}
int main()
{
return 0;
}