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

企业网站建设应避免数据孤岛冠县网站建设公司

企业网站建设应避免数据孤岛,冠县网站建设公司,快速seo关键词优化方案,企业邮箱在哪里查一、题目​​​​​ 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. 我们要返回的是“所有和为0且不重复的三元组”,这是一个数组类型,数组里的每一个元素都是三元组;

2. 要有三个用于遍历的指针;

3. 判断条件就两个:

  • i!=ji!=k 且 j!= k 
  • nums[i] + nums[j] + nums[k] == 0、

4. 如果直接遍历,重复次数太多了,如何解决?

【联想到“两数之和Ⅱ”的那道题,因为有了一个“非严格递增”的顺序条件,我们得以简化遍历的过程;在这里也可以借鉴这个思路——创造一个顺序出来】

该题题解见如下文章:
【附JS、Python、C++题解】Leetcode面试150题(7)-CSDN博客

三、代码

① JavaScript

function threeNums(nums){nums.sort((a,b)->a-b);let res = [];let l = nums.length;for(let i = 0; i<l-2; i++){if(i>0 && nums[i]===nums[i-1]){continue;}let j = i+1;let k = l-1;while(j<k){const sum = nums[i] + nums[j] + nums[k];if(sum === 0){res.push([nums[i], nums[j], nums[k]]);while(j<k && nums[j] === nums[j+1]){j++;}while(j<k && nums[k] === nums[k-1]){k--;}j++;i--;}else if(sum<0){j++;}else{K--;}}}return res;
}

② Python

def three_sum(nums):nums.sort()  # 先对数组进行排序res = []length = len(nums)for i in range(length - 2):if i > 0 and nums[i] == nums[i - 1]:continuej, k = i + 1, length - 1while j < k:total = nums[i] + nums[j] + nums[k]if total == 0:res.append([nums[i], nums[j], nums[k]])# 避免重复计算while j < k and nums[j] == nums[j + 1]:j += 1while j < k and nums[k] == nums[k - 1]:k -= 1j += 1k -= 1elif total < 0:j += 1else:k -= 1return res

③ C++

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;int length = nums.size();// 先对数组进行排序sort(nums.begin(), nums.end());for (int i = 0; i < length - 2; ++i) {if (i > 0 && nums[i] == nums[i - 1]) {continue;}int j = i + 1;int k = length - 1;while (j < k) {int total = nums[i] + nums[j] + nums[k];if (total == 0) {res.push_back({nums[i], nums[j], nums[k]});// 避免重复计算while (j < k && nums[j] == nums[j + 1]) {++j;}while (j < k && nums[k] == nums[k - 1]) {--k;}++j;--k;} else if (total < 0) {++j;} else {--k;}}}return res;
}

四、反思

这道题自己做的时候并没有先进行排序,导致重复的次数很多。下次遇到遍历很复杂的问题,要先进行处理!!


文章转载自:

http://oZGAo2L4.ypwLb.cn
http://fRF6vJOs.ypwLb.cn
http://CfzydGUR.ypwLb.cn
http://1FtkNr3e.ypwLb.cn
http://lF8Chl6Y.ypwLb.cn
http://XwT70wfU.ypwLb.cn
http://qzMzND5Q.ypwLb.cn
http://lKxzr38y.ypwLb.cn
http://IhgqN7GT.ypwLb.cn
http://V0ecVzex.ypwLb.cn
http://izQZJShn.ypwLb.cn
http://Rd0HWTcT.ypwLb.cn
http://uh6Ty6wD.ypwLb.cn
http://rvRL2K5O.ypwLb.cn
http://y13hfVpU.ypwLb.cn
http://BaJ5PdOk.ypwLb.cn
http://33D86K2V.ypwLb.cn
http://eKZChBQU.ypwLb.cn
http://NMmBgeP0.ypwLb.cn
http://YJXZ6hE2.ypwLb.cn
http://MK2JxSRA.ypwLb.cn
http://FtZQaVXp.ypwLb.cn
http://1gGyREZF.ypwLb.cn
http://X2ifpp10.ypwLb.cn
http://7B2p1hLA.ypwLb.cn
http://EtZPDGwL.ypwLb.cn
http://fMZBa9xz.ypwLb.cn
http://kM7JEmO1.ypwLb.cn
http://GAinjlXF.ypwLb.cn
http://PLe1YDT2.ypwLb.cn
http://www.dtcms.com/wzjs/773058.html

相关文章:

  • 建设银行面试通知网站软件开发和网站开发难度
  • 企业网站宣传建设做一个网站的基本步骤
  • 江油移动网站建设集团公司网站模板
  • 网站搭建流程图郑州网站推广排名
  • 网站建设的公司如何选iis5.1 建立网站
  • 共享网站哪里建无锡网站服务公司
  • 电商网站 厦门金融网站策划方案
  • 北京网站定制流程建立一个网站要什么条件
  • wordpress网站特效外贸通道支持asp的网站吗
  • 青海网站建设设计wordpress网址更换
  • 怎么做健康咨询网站服务器上网站打不开
  • 西宁建设工程信息网站学习软件合集
  • 钓鱼网站制作视频教程四川建设厅官方网站九大员通知
  • 网站做查赚钱辽宁城乡建设官方网站
  • 包头网站建设包头网站重大建设项目公开发布制度
  • 制作企业网站作业南阳市网站建设
  • 肥猫网站建设安庆网站建设工作室
  • 一起做网店网站特点网页设计作业成品免费百度云
  • 网站被做跳转怎么办怎么阻止网站
  • 西安优秀的集团门户网站建设企查查官网查询入口
  • 建设wap手机网站制作如何创建网站主页
  • 销型网站建设必须的步骤包括网站创建软件
  • 网站建设除了中企动力企业为什么要自助建站
  • wordpress建什么站八年级信息技术网站建立怎么做
  • 网站建设哪家公司最好中小企业网站开发
  • 上海网站建设搜q.479185700wordpress注册邮箱发送
  • 南昌网站设计专业排名it培训机构专业
  • 做游戏模板下载网站专注服务于站长和网站的信息平台.
  • 上海网站备案咨询手机登录网站怎么建设
  • 贵阳免费做网站莱芜可信赖的网站建设