首页 > 其他分享 >15. 三数之和c

15. 三数之和c

时间:2024-03-12 17:15:49浏览次数:24  
标签:count index 15 returnSize int 三数 && array

回溯写了个超时了。这里写得树层去重还是值得借鉴得。

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int temp[3]={0};
void dfs(int** array,int* nums,int numsSize,int* returnSize,int* column,int index,int count,int sum){
    if(count>3 || (index>=numsSize && count!=3)) return;
    if(count==3&&sum!=0) return;
    if(count==3 && sum==0){
        column[*returnSize]=3;
        array[*returnSize]=(int*)malloc(sizeof(int)*3);
        for(int i=0;i<3;i++) array[*returnSize][i]=temp[i];
        (*returnSize)++;
        return;
    }
    if(sum>0 && nums[index]>0) return;
    for(int i=index;i<numsSize;i++){
        if(i==index||(nums[i]!=nums[i-1])){
            temp[count]=nums[i];
            dfs(array,nums,numsSize,returnSize,column,i+1,count+1,sum+nums[i]);
        }
    }
}

int cmp(const void* a,const void* b){
    return *(int*)a-*(int*)b;
}

int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) {
    qsort(nums,numsSize,sizeof(int),cmp);
    int* column=(int*)malloc(sizeof(int)*3500);
    *returnSize=0;
    int** array=(int**)malloc(sizeof(int*)*3500);
    dfs(array,nums,numsSize,returnSize,column,0,0,0);
    *returnColumnSizes=column;
    return array;
}

结果:

标签:count,index,15,returnSize,int,三数,&&,array
From: https://www.cnblogs.com/llllmz/p/18068736

相关文章

  • 7-15 报数(留个题目,还没写代码)
    7-15报数分数10作者王秀单位福州大学输入两个正整数n和m((1<m<n<=50)),有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数m的人退出圈子,下一个人从1开始重新报数,报数m的人退出圈子。如此循环,直到留下最后一个人。请按退出顺序输出退出圈子的人的编号......
  • 15_模板模式
    模板模式是一种行为型设计模式,它定义了一个抽象类作为算法的骨架,而将一些步骤的具体实现延迟到子类中。模板模式提供了一个统一的算法流程,但允许子类根据需要重写算法的具体步骤。模板模式有三个主要角色:抽象类(AbstractClass):定义了算法的骨架,包含了一个模板方法以及一些抽象......
  • 洛谷题单指南-线性表-P1540 [NOIP2010 提高组] 机器翻译
    原题链接:https://www.luogu.com.cn/problem/P1540题意解读:本题模拟内存的调入调出,内存先入先出的特性就是队列。解题思路:本题需要两种数据结构:队列、数组队列用来模拟内存的操作,数组充当hash表用于判断单词在内存是否存在核心逻辑:对于每一个单词,如果内存不存在,查一次词典,再将......
  • redis自学(15)IO多路复用
     无论是阻塞IO还是非阻塞IO,用户应用在一阶段都需要调用recvfrom来获取数据,差别在于无数据时的处理方案: 如果调用recvfrom时,恰好没有数据,阻塞IO会使进程阻塞,非阻塞IO使CPU空转,都不能充分发挥CPU的作用。 如果调用recvfrom时,恰好有数据,则用户进程可以直接进入第二阶段,读取并......
  • 客户说|从4小时到15分钟,一次分布式数据库的丝滑体验
    文/识货运维总监瞿晟荣识货APP致力于为广大用户提供专业的网购决策指导,为喜欢追求性价比的网购朋友带来及时劲爆的运动、潮流、生活、时尚等网购优惠资讯,产品覆盖国内外主流购物商城。它提供了全球范围内的时尚品牌、潮流单品的信息,帮助用户发现和购买最新、最热、最具性价......
  • 洛谷题单指南-线性表-P3613 【深基15.例2】寄包柜
    原题链接:https://www.luogu.com.cn/problem/P3613题意解读:此题很容易想成用二维数组求解,但是最多有10^5*10^5个寄包柜格子,二维数据会爆空间,题目明确各自一共不超过10^7,所以需要动态数据结构vector。解题思路:vector的问题在于需要提前明确空间大小,才能进行随即访问操作,否则可......
  • 洛谷题单指南-线性表-P3156 【深基15.例1】询问学号
    原题链接:https://www.luogu.com.cn/problem/P3156解题思路:简单的数组题,唯一需要注意的是读写的数据量比较大,输入输出最好用scanf、printf100分代码:#include<bits/stdc++.h>usingnamespacestd;constintN=2e6+5;inta[N],n,m;intmain(){scanf("%d%d",&......
  • CF1599
    CF1599BubbleCup14-FinalsOnlineMirror(Unrated,ICPCRules,TeamsPreferred,Div.1)CF1599Alink题意给你一个长度为\(N\)的质量为\(A_1,A_2,\dots,A_N\)的数组\(A\)。每个数组中的值表示各个砝码的重量。所有砝码的质量均不相同。你可以把每个砝码放在天平......
  • LeetCodeHot100 283. 移动零 11. 盛最多水的容器 15. 三数之和 42. 接雨水
    283.移动零https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&envId=top-100-likedpublicvoidmoveZeroes(int[]nums){intr=0;for(inti=0;i<nums.length;i++){if(nums[i]!=0){......
  • vs2019单独重新安装python37_64失败解决办法(bilibili上我最早写的是https://www.bilib
    上个周末的时候,我发现用vs2019编写python的时候。代码高亮出现了奇怪的问题,进入解决方案的时候,print还是蓝色的,但是过了几秒钟后就变为黑色了,因此在最开始的时候我试图通过换一个皮肤和在管理扩展里面找扩展来解决,但是还是有相关问题。于是到vs2019对应的python文件夹找问题,目录是......