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

实用的网站郑州seo优化顾问阿亮

实用的网站,郑州seo优化顾问阿亮,wordpress 英文链接,加拿大计划网站怎么做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 。

  • 我的原始人题解:如果题目为两数之和等于某数,那么可以将数组排序后用两个指针从左右两端开始找,当和过大则右指针左移,和过小则左指针右移,否则记录当前可能然后左右指针挑一个移动。比如数组 [1,2,3,4,5] 要找和为 5 的两个数,首先左右两指针分别指向 [1,5],此时和为 6 大于 5,所以应该减小和,即右指针左移;此时为 [1,4] 符合条件并记录,比如这时右指针左移,然后得到 [1,3] 发现和为 4 过小,所以左指针右移来增加和,得到 [2,3] 满足条件并记录。
  • 那么三数之和也是基于同样的思路,用三个指针来表示三个数,固定其中一个,然后剩下两个指针寻找结果,为了去重,所以先使用 set 记录结果
  •   public List<List<Integer>> threeSum(int[] nums) {Set<List<Integer>> res = new HashSet<>();Arrays.sort(nums);int n = nums.length;// 因为至少要三个数,所以到 n-2 即可for(int i=0;i<n-2;i++){// i 在遍历时其实就表示每次固定的那一位// j 每次从 i 后一位开始// k 每次从最右端开始int j=i+1,k=n-1;while(j<k){int tmp = nums[i]+nums[j]+nums[k];if(tmp == 0){res.add(new ArrayList<Integer>(Arrays.asList(nums[i],nums[j],nums[k])));}if(tmp > 0)k--;else if(tmp <= 0)j++;}}ArrayList<List<Integer>> ans = new ArrayList<>(res);return ans;}
    
  • 他人优化版本
  •   public List<List<Integer>> threeSum(int[] num) {//先对数组进行排序Arrays.sort(num);List<List<Integer>> res = new ArrayList<>();for (int i = 0; i < num.length - 2; i++) {// 这一轮固定位如果和之前固定的一样那就没必要再找一遍了if (i > 0 && num[i] == num[i - 1])continue;//因为是排序的,如果第一个数字大于0,那么后面的也都//大于0,他们三个数字的和不可能等于0if (num[i] > 0)break;int left = i + 1;//左指针int right = num.length - 1;//右指针int target = -num[i];while (left < right) {//左右指针的和int sum = num[left] + num[right];if (sum == target) {//找到了一组,把他们加入到集合list中res.add(Arrays.asList(num[i], num[left], num[right]));// 如果有重复的值就一次性移动到其他值,而不是每一轮固定移动一步while (left < right && num[left] == num[left + 1])left++;while (left < right && num[right] == num[right - 1])right--;left++;right--;} else if (sum < target) {left++;} else {right--;}}}return res;
    

}

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

相关文章:

  • 网络服务商网站网络营销成功案例分析其成功原因
  • 微信群投票网站怎么做青海百度关键词seo
  • 自己弄个网站网站外链怎么发布
  • 网站开发方案关键词怎么写
  • 试用网站 源码seo优化包括
  • wordpress重定向次数过多seo搜索引擎优化工资薪酬
  • 怎么做外网的网站电商运营培训哪个机构好
  • 做响应式网站制作天津短视频seo
  • 给网站做友情链接免费外链发布平台在线
  • 做网站用多大的服务器关键词优化排名用什么软件比较好
  • wordpress onepage重庆seo网络优化师
  • 怎么弄免费的空间做网站小说排行榜百度搜索风云榜
  • 联系我们网页设计图片北京seo排名方法
  • 视频生成链接网站重庆百度推广seo
  • 做网站字体大小网站关键词
  • 新疆 网站开发营销平台
  • asp网站制作成品作业关键词推广软件排名
  • 甘肃省专业做网站电商运营入门基础知识
  • 国外服务器电商网站怎么弄一个网站平台
  • 电商网站建设包括哪些方面怎样推广自己的广告
  • wordpress企业能用吗百度怎么做关键词优化
  • 旅游网站设计与建设论文自己搭建一个网站
  • 桂林网站建设官网关键词seo公司推荐
  • 企业管理咨询服务机构搜索引擎优化主要包括
  • 企业建网站计什么科目百度搜索引擎优化怎么做
  • 独立网站做外贸报价优化营商环境个人心得体会
  • 网站上怎么做全景看图竞价托管代运营公司
  • 哪个做网站公司好百度推广全国代理商排名
  • 四平做网站佳业球队世界排名榜
  • 深圳微商城网站设计公司快速排名软件seo系统