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

网站开发和广告制作网站权重查询

网站开发和广告制作,网站权重查询,seowhy问答,个人建网站需要什么手续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 != ji != 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
  • -105 <= nums[i] <= 105

题解:

法一:排序 + 双指针

1. 先将目标数组排序,使其由小到大排序

Arrays.sort(nums);

2. 基本逻辑:设置三个指针,第一个指针i从头开始遍历,第二个指针left在i后一个位置开始遍历,第三个指针right则从最后一个位置开始遍历。

for(int i = 0;i < nums.length;i++) {int left = i + 1;int right = nums.length - 1;while(right > left) {int sum = nums[i] + nums[left] + nums[right];if(sum > 0) {right--;}else if(sum < 0) {left++;}else {res.add(Arrays.asList(nums[i],nums[left],nums[right]));right--;left++;}}}

3. 特殊情况直接返回

若nums[0]指向0则证明所有元素都大于0,不可能会有三个数之和大于0,返回空列表。

if(nums[0] > 0) {return res;}

4. 去重操作

4.1 对i指针去重

i指针指向的新元素与其之前指向的元素为同一个元素,直接跳过

if(i > 0 && nums[i] == nums[i - 1]) {continue;}

4.2 对left、right指针去重(添加新结果是进行去重)

while(right > left && nums[right] == nums[right - 1]){right--;}
while(right > left && nums[left] == nums[left + 1]) {left++;}

整体代码实现

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();Arrays.sort(nums);for(int i = 0;i < nums.length;i++) {if(nums[0] > 0) {return res;}if(i > 0 && nums[i] == nums[i - 1]) {continue;}int left = i + 1;int right = nums.length - 1;while(right > left) {int sum = nums[i] + nums[left] + nums[right];if(sum > 0) {right--;}else if(sum < 0) {left++;}else {res.add(Arrays.asList(nums[i],nums[left],nums[right]));while(right > left && nums[right] == nums[right - 1]){right--;}while(right > left && nums[left] == nums[left + 1]) {left++;}right--;left++;}}}return res;}
}

 

http://www.ds6.com.cn/news/27949.html

相关文章:

  • 做网站开发学什么必应搜索引擎网站
  • 微信如何做积分商城网站整站seo排名要多少钱
  • 公众号开发者中心在哪厦门百度seo点击软件
  • 网站内容建设流程sem搜索引擎营销是什么
  • 同性男做性视频网站渠道网络
  • 大型集团网站建设徐州seo网站推广
  • 济南做网站优化seo优缺点
  • 图怪兽在线设计平台成都seo推广
  • 网站建设简运维 简历发帖推广平台
  • 义乌制作网站开发app推广拉新平台
  • 陕西网站建设公司找哪家百度最怕哪个部门去投诉
  • 别墅室内设计网站河北百度seo软件
  • 珠海企业网站制作公司百度搜索风云榜下载
  • 做网站推广一般多少钱武汉百度快速排名提升
  • app拉新一手渠道优化网站软文
  • 中国社交网站做多外国人的短信广告投放
  • 免费企业网站模板html百度网盘官网登录入口
  • 废旧材料手工制作大全黑帽seo是什么
  • 网站建设硬件开支做网络推广
  • 网站性能优化方案企业推广的渠道有哪些
  • 品牌网站建设 结构营销咨询公司经营范围
  • 电子商务网站网络拓扑门户网站
  • 南京做网站牛西安seo优化培训
  • 专业设计笔记本电脑无锡seo网站排名
  • 邯郸网站建设的地方西安网站seo技术
  • 大田县建设局官方网站考试培训
  • wordpress logout百度seo关键词工具
  • 网站建设需要找工信部吗查询网 域名查询
  • 常州城投建设工程招标有限公司网站引流推广犯法吗
  • 网站制作窍门百度推广怎么才能效果好