当前位置: 首页 > 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/214818.html

相关文章:

  • 网站建设空间大小推广服务商
  • 简述网站开发平台及常用工具怎么根据视频链接找到网址
  • 衢州企业网站建设公司网店代运营公司哪家好
  • 核酸造假7人枪毙视频seo怎么刷关键词排名
  • 水务 网站建设销售技巧和话术
  • 备案网站忘记密码百度平台客服电话是多少
  • 泉州有哪些做网站的商丘网站建设公司
  • 网站做的一样侵权吗网页优化包括什么
  • m2c是什么意思北京专业seo公司
  • 微信小程序怎么制作的武汉seo培训
  • 佛山网站建设公司88关键词可以分为哪三类
  • 网页游戏排行榜推选新壹玩seo关键词优化怎么收费
  • 龙岗 网站建设郑州seo网络推广
  • 数据库修改网站后台密码成都网站建设团队
  • 太原网站如何制作做一个app软件大概要多少钱
  • 南通网站备案以下属于网站seo的内容是
  • 二级建造师证书查询官网怎么样关键词优化
  • 怎样在华为云服务器里建设网站郑州seo线下培训
  • 苏州网站开发公司招聘信息品牌运营具体做什么
  • 宝鸡企业网站建设关键词排名推广方法
  • 现在一些产品网站开发用的啥框架游戏挂机赚钱一小时20
  • 国内ui网站企业网站制作教程
  • 网站建设的基本内容石家庄最新新闻事件
  • 体育网站建设二十四个关键词
  • 建设网站如何进行网站备案优化网站的公司哪家好
  • 单页营销型网站模板下载app001推广平台官网
  • 网站如何做成app哪里有竞价推广托管
  • 市场营销目标怎么写推动防控措施持续优化
  • 自助建站免费建站五个平台网推项目
  • wordpress支持的视频格式seo优化师是什么