leetcode——15.3Sum
来源:互联网 发布:米特网域名怎么解析 编辑:程序博客网 时间:2024/06/05 11:25
#include<stdio.h>#include<stdlib.h>int** threeSum(int* nums, int numsSize, int* returnSize){if (numsSize<3)return NULL;int comNum = numsSize*(numsSize - 1)*(numsSize - 2) / 6;int** ret = (int**)malloc(sizeof(int*)*comNum);//先创建“用来存储一堆指针的”空间int** tmp = ret;int realcomNum = 0;for (int i = 0; i < numsSize - 2; i++){for (int j = i+1; j < numsSize - 1; j++){for (int k = j+1; k < numsSize; k++){if (0 == nums[i] + nums[j] + nums[k]){*tmp = (int *)malloc(sizeof(int) * 3);//再把里面的指针,指向所分配空间*(*(tmp)) = nums[i];*(*(tmp)+1) = nums[j];*(*(tmp)+2) = nums[k];tmp = tmp + 1;realcomNum = realcomNum + 1;}}}} //注意这里面的写法,很有借鉴意义。对二级指针的运用很有启发,而且可以扩展到更高级指针。int** retReal = (int **)malloc(sizeof(int*)*realcomNum);for (int h = 0; h<realcomNum; h++){retReal[h] = tmp[h];//这里写成ret[h]才行}free(ret);*returnSize = realcomNum;return retReal;}int main(void)//这份代码并不能完成题目要求的不能重复的要求。只是熟悉指针操作而已。{int array[] = { 1,0,0,0,-1};int comnum=0;int** p = NULL;p = threeSum(array, sizeof(array) / sizeof(array[0]), &comnum);printf("共有%d个组合:\n",comnum);for (int n = 0; n <comnum; n++){printf("[%d,%d,%d]\n", *(p[n]+0), *(p[n] + 1), *(p[n] + 2));free(p[n]);}free(p);p = NULL;getchar();return 0;}
阅读全文
1 0
- LeetCode——15.3Sum
- leetcode——15.3Sum
- LeetCode — Two Sum
- LeetCode—Two Sum
- LeetCode—Two Sum
- LeetCode—Target Sum
- leetcode—Two Sum
- leetcode— 3Sum
- LeetCode —-Two Sum
- LeetCode.15.3Sum —— 解题
- Sum—LeetCode-1 Two Sum
- Sum—LeetCode-15 3Sum
- Sum—LeetCode-18 4Sum
- Sum—LeetCode-454 4Sum II
- LeetCode —— 3SUM
- LeetCode——Two Sum
- LeetCode——Path Sum
- LeetCode——3Sum
- Mysql 开启Federated引擎的方法
- Q25_数据流中的中位数
- DQL、DML、DDL、DCL的概念与区别
- LINQ_to_SQL语法及实例大全
- 基于Spark的移动用户主要活动地点的挖掘算法实现以及JavaEE技术整合
- leetcode——15.3Sum
- 计算广告课程小结
- webjs--两种时钟
- ubuntu14.04 apt-get由于源的问题导致无法下载问题解决
- popupWindow的封装使用
- centos修改环境变量
- 迅为I.MX6Q开发板Ubuntu系统的烧写方法
- java中关于冒泡排序
- jquery和js中对DOM元素的操作