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

安监局网站建设wordpress 修改路径

安监局网站建设,wordpress 修改路径,南宁经典网站建设,企业公示信息查询系统广西摘要#xff1a; Leetcode的AC指南 —— 15. 三数之和。题目介绍#xff1a;给你一个整数数组 nums #xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k #xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且… 摘要 Leetcode的AC指南 —— 15. 三数之和。题目介绍给你一个整数数组 nums 判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k 同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。注意答案中不可以包含重复的三元组。 文章目录 一、题目二、解析1、哈希法2、双指针 3、思考 一、题目 题目介绍 给你一个整数数组 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 。示例 2: 输入nums [0,0,0] 输出[[0,0,0]] 解释唯一可能的三元组和为 0 。提示 3 nums.length 3000 -105 nums[i] 105 二、解析 1、哈希法 public static ListListInteger threeSum(int[] nums) {ListListInteger result new ArrayList();Arrays.sort(nums); // 对数组排序// 找出a b c 0// a nums[i], b nums[j], c -(a b)for (int i 0; i nums.length; i) {if (nums[i] 0) {break;}// 对a去重if (i 0 nums[i] nums[i - 1]) {continue;}SetInteger set new HashSet();for (int j i 1; j nums.length; j) {// 对b去重, 由于存在b c所以在对b去重时排除nums [-1,-1,0,1,-4,0,2,2,22]这种情况避免出现两次【-422】if (j i 2 nums[j] nums[j - 1] nums[j - 1] nums[j - 2]) {continue;}// 如果set中存在c则将abc存入result// 如果set中不存在c添加c到setint c - (nums[i] nums[j]);if (set.contains(c)) {result.add(Arrays.asList(nums[i], nums[j], c));set.remove(c); // 对c去重复} else {set.add(nums[j]);}}}return result;} 时间复杂度: O(n^2)空间复杂度: O(n)额外的 set 开销 2、双指针 动画效果如下 public static ListListInteger threeSum(int[] nums) {ListListInteger result new ArrayList();Arrays.sort(nums); // 对数组排序int right, left;// a b c 0for(int i 0; i nums.length - 2; i){if(nums[i] 0 || nums[nums.length - 1] 0) break; // 最小值大于0最大值小于0时不满足题意直接跳出循环if(i 0 nums[i] nums[i - 1]) continue; // 对a去重复left i 1; // 左指针指向a后的第一个元素right nums.length - 1; // 右指针指向数组的最后一个元素while (left right) {int sum nums[i] nums[left] nums[right];if (sum 0) {right--;} else if (sum 0) {left;} else {result.add(Arrays.asList(nums[i], nums[left], nums[right]));// 去重逻辑应该放在找到一个三元组之后对b 和 c去重while (right left nums[right] nums[right - 1]) right--; // 左移指针指向第一个相邻不重复的元素右侧while (right left nums[left] nums[left 1]) left; // 右移指针指向第一个相邻不重复的元素的左侧right--; // 右指针指向第一个相邻不重复的元素left; // 左指针指向第一个相邻不重复的元素/*while (right left) {right--;if(nums[right] ! nums[right 1]) break;} // 左移指针指向第一个相邻不重复的元素while (right left nums[left] nums[left - 1]) left; // 右移指针指向第一个相邻不重复的元素*/}}}return result;}时间复杂度: O(n^2)空间复杂度: O(1) 3、思考 两数之和可以用双指针法吗两数之和的题目链接 答 是不可以的。两数之和要求返回数组索引下标而双指针法要求排序一旦排序后原数组的索引下标就改变了。如果两数之和也是返回数值的话就可以使用双指针了。
http://www.pierceye.com/news/790710/

相关文章:

  • 快速搭建网站wordpress成品网站货源入口
  • 信宜手机网站建设公司广州网站建设服务商
  • 网站备案注册3g免费网站制作
  • 做网站需要vps吗建设银行etc的网站是哪个好
  • 网站服务器 2核如何做网站联盟
  • 做空间的网站吗wordpress 视频管理 主题
  • 做外链选择那些网站建网站怎样往网站传视频
  • 网站主机多大车陂手机网站建设报价
  • 网站策划书内容wordpress 一键恢复
  • wordpress+外观+权限seo排名工具
  • 江苏企业网站制作哪家好潍坊网站开发招生信息
  • 建设一个地方门户网站网站名称搜索不到
  • 南江县住房和城乡建设局网站上海seo关键词优化
  • 门窗厂家东莞网站建设湖南健康码
  • 企业网站建设的背景和目的互联网政务服务平台
  • 化州市住房和城乡建设局网站开发网站心得
  • 网站设计制作公司需要什么资质python h5网站开发
  • 广东深圳广东深圳网站建设惠州网站开发公司电话
  • 建管家企业网站discuz仿wordpress
  • 老网站不要了做新站需要怎么处理平面广告设计赏析
  • 怎么看网站是不是php语言做的网站系统优点
  • 旅游网站建设 策划书销售app哪个好用
  • 建个大型网站要多少钱wordpress页眉设置
  • 浅谈网站建设开发浙江中联建设集团网站
  • 哪有做网站全包圆装修公司
  • 邵阳建设银行网站是多少建设银行 企业
  • 网站开源系统网页制作与网站建设思维导图
  • 专门做前端项目的一些网站wordpress 朋友圈插件
  • 网站建设哪家专业网站开发费用怎么做账
  • 用dw怎么做网站首页wordpress 文章页面失败