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

什么是网站什么是网址互动营销公司

什么是网站什么是网址,互动营销公司,网站续费,网站代付系统怎么做目录 LeetCode之路——15. 三数之和 分析: 官方题解: LeetCode之路——15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nu…

目录

LeetCode之路——15. 三数之和

分析:

官方题解:


LeetCode之路——15. 三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != 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. 两数之和的思路,可以让nums[i] =a去遍历数组作为target。同时nums[i+1] =b继续遍历数组,找到nums[j]满足 a + b + nums[j] =0.

1.需要注意元素组去重。

2.需要注意数组边界。

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();if (nums.length < 3) return res;Arrays.sort(nums); // 递增顺序for (int i = 0; i < nums.length - 2; i++) {if (nums[i] > 0) break;int first = nums[i]; // 取得a的值if (i > 0 && nums[i] == nums[i - 1]) continue; // 排序后,需要保证不重复Set<Integer> set = new HashSet<>();for (int j = i + 1; j < nums.length; j++) {int second = nums[j]; // 取得b的值int third = - (first + second);if (set.contains(third)) {res.add(new ArrayList<>(Arrays.asList(first,second,third)));while(j < nums.length - 1 && nums[j] == nums[j + 1]) j++;}set.add(second);}}return res;}
}
  • 时间复杂度:O(N^2)

  • 空间复杂度:O(N)

官方题解:
class Solution {public List<List<Integer>> threeSum(int[] nums) {int n = nums.length;Arrays.sort(nums);List<List<Integer>> ans = new ArrayList<List<Integer>>();// 枚举 afor (int first = 0; first < n; ++first) {// 需要和上一次枚举的数不相同if (first > 0 && nums[first] == nums[first - 1]) {continue;}// c 对应的指针初始指向数组的最右端int third = n - 1;int target = -nums[first];// 枚举 bfor (int second = first + 1; second < n; ++second) {// 需要和上一次枚举的数不相同if (second > first + 1 && nums[second] == nums[second - 1]) {continue;}// 需要保证 b 的指针在 c 的指针的左侧while (second < third && nums[second] + nums[third] > target) {--third;}// 如果指针重合,随着 b 后续的增加// 就不会有满足 a+b+c=0 并且 b<c 的 c 了,可以退出循环if (second == third) {break;}if (nums[second] + nums[third] == target) {List<Integer> list = new ArrayList<Integer>();list.add(nums[first]);list.add(nums[second]);list.add(nums[third]);ans.add(list);}}}return ans;}
}
​
作者:力扣官方题解
链接:https://leetcode.cn/problems/3sum/solutions/284681/san-shu-zhi-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 时间复杂度:O(N^2)

  • 空间复杂度:O(N)

http://www.hotlads.com/news/3722.html

相关文章:

  • 临沂网站制作培训windows10优化大师
  • 大型公司建站seo项目培训
  • 自己怎样免费建设网站seo类目链接优化
  • 学院做网站的意义网易企业邮箱
  • 湖南专业seo推广优化网站打开速度
  • 模板网站制作服务seo研究中心qq群
  • 郑州公司网站开发官方百度app下载安装
  • 成都网站开发公司专业网络推广
  • wordpress自动播放音乐插件seo推广需要多少钱
  • 嘉兴网站建设网站成都网多多
  • 贺州做网站哪家公司百度收录链接提交入口
  • 贵阳网站建设有限公司seo工程师是什么职业
  • 南京网站开发荐南京乐识百度助手免费下载
  • 电商网站推广方法十大营销策略有哪些
  • 如乐建站之家seo建站
  • 南城网站建设公司咨询制作小程序的软件
  • 外贸网站制作怎么选超级优化大师
  • web service做网站google搜索引擎入口 镜像
  • 站酷网免费素材图库官网电子商务网站
  • 游戏网站建设教程网络营销的现状和发展趋势
  • 360免费建站河南省疫情最新情况
  • 个人做哪方面网站软考培训机构排名
  • 珠海做网站及推广免费正规的接单平台
  • 网站建设咸阳站长之家点击进入
  • 企业信息化建设方案 网站产品销售推广方案
  • 音乐网站样式设计产品网络推广方案
  • 网站开发课程安排爱站网 关键词挖掘工具站长工具
  • ukidc做电影网站长沙网站制作公司哪家好
  • 网站维护细则谷歌商店下载不了软件
  • 南京医疗网站建设品牌运营策划