当前位置: 首页 > wzjs >正文

绍兴建设网站网站广告策划

绍兴建设网站,网站广告策划,做网站需要掌握什么,客户拒绝做网站的理由15.三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组…

15.三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例 1:
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。
示例 2:
输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。
示例 3:
输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。
提示:
3 <= nums.length <= 3000
-10^5 <= nums[i] <= 10^5

题解

做这道题目之前可以看看这道题目 167.两数之和 II

在两数之和中,我们通过使用左右两个指针在 O(n) 的时间内实现了寻找两个和为target的数

即使用 l 和 r 左右两个指针,假如nums[ l ] + nums[ r ] > target 则 r-- 若小于则 l++ 否则就找到了

  • 类似的,对于三个数和为target,我们可以将其拆分为两个数和一个数的和

  • 那么我们可以先枚举一个数作为三元组中最小的数,对于每一个数 nums[ i ],我们需要找到和为 target - nums[ i ] 的两个数,那么问题就回到了167.两数之和 II

需要注意的是,我们需要先将nums数组进行排序,否则无法在O(n)的时间内实现找到两个数

以及题目要求不能有重复的三元组,那么我们需要在枚举时略过相同的nums[ i ],同时,在找另外两个数时,也要略过相同的nums[ l ],nums[ r ]


优化

可以发现,由于我们枚举第一个数nums[ i ]是递增的,那么假如某一个nums[ i ]与剩下的最小的两个数之和大于0,那么之后的nums[ i ]肯定也是大于0的,所以就可以直接break掉循环

类似的,假如某一个nums[ i ]与剩下的最大的两个数之和仍旧小于0,那么就可以直接continue


代码如下↓

/*** 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** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) {int cmp(const void* a, const void* b){return *(int*)a - *(int*)b;}qsort(nums,numsSize,sizeof(int),cmp);int** arr = (int**)malloc(sizeof(int*)*99999);int n=0;for(int i=0;i<numsSize-2;i++){if(i>0 && nums[i]==nums[i-1]){continue;}if(nums[i]+nums[i+1]+nums[i+2]>0){break;}if(nums[i]+nums[numsSize-1]+nums[numsSize-2]<0){continue;}int k=-nums[i];int l=i+1;int r=numsSize-1;while(l<r){if(nums[l]+nums[r]==k){int* arrr = (int*)malloc(sizeof(int)*3);arrr[0]=nums[i];arrr[1]=nums[l];arrr[2]=nums[r];arr[n++]=arrr;l++;r--;}else if(nums[l]+nums[r]>k){r--;}else{l++;}while(l>i+1 && l<r && nums[l]==nums[l-1]){l++;}}}*returnSize=n;*returnColumnSizes=(int*)malloc(sizeof(int)*n);for(int i=0;i<n;i++){(*returnColumnSizes)[i]=3;}return arr;
}
http://www.dtcms.com/wzjs/512772.html

相关文章:

  • 策划案需要给做网站吗免费网站注册免费创建网站
  • 做网站完整过程天津百度推广开户
  • 求个网站能用的快手seo关键词优化
  • 深圳网站建设公司推荐短视频seo优化
  • 南京在线网站制作网站品牌推广策略
  • 误给传销公司做网站算犯罪吗网站推广的10种方法
  • 做网站用什么软件最简单网络维护培训班
  • 企业年金怎么领取爱站seo
  • 个人资质网站做推广百度关键词优化有效果吗
  • 中国有用bootstrap做网站的吗如何搭建一个网站
  • 阳山网站建设西安自助建站
  • html模板免费十个网页吉安seo
  • 最好链接的网站建设网站在线优化检测
  • 福州百度企业网站seo东莞网络排名优化
  • 做的比较好的卡车网站网站建设品牌公司
  • 山东省建设八大员考试网站百度关键词点击价格查询
  • 公司做影视网站侵权产品推广图片
  • 建设飞鹰摩托车官方网站网络营销的模式有哪些?
  • 化妆品网站程序天津百度网站快速优化
  • 广州白云区今天的消息重庆网站搜索引擎seo
  • 网站个性化设计公司网站定制
  • 域名和网站空间怎么做解析中国新冠一共死去的人数
  • 阿里云iot网站开发全网引流推广 价格
  • 网站建设 上海珍岛网站降权查询工具
  • 百度做网站骗人到哪里去投诉站长seo综合查询工具
  • 西安做网站找缑阳建自动推广软件免费
  • 阜宁做网站哪家公司好整合营销策略
  • 音乐网站制作课程报告品牌设计公司
  • 做怎么网站推广优化师的工作内容
  • 做一个公司的网站应做哪些准备工作推广衣服的软文