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

国内ui做的好的网站有哪些站长统计app进入网址新版小猪

国内ui做的好的网站有哪些,站长统计app进入网址新版小猪,web是网站建设与管理吗,手机版网站优化给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1…

给你一个整数数组 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] 。
注意,输出的顺序和三元组的顺序并不重要。

堆排序+双指针

class Solution {public List<List<Integer>> threeSum(int[] nums) {heapSort(nums); List<List<Integer>> ans = new ArrayList<List<Integer>>();int length = nums.length;for(int i = 0;i < length;i++){if(i > 0 && nums[i] == nums[i-1]){continue;}int k = length - 1;for(int j = i + 1;j < length;j++){if(j > i + 1 && nums[j] == nums[j-1]){continue;}while(k > j && nums[k] + nums[j] > -nums[i]){k--;}if(k == j){break;}if(nums[i] + nums[k] + nums[j] == 0){List<Integer> list = new ArrayList<Integer>();list.add(nums[i]);list.add(nums[j]);list.add(nums[k]);ans.add(list);}}}return ans;}public static void heapSort(int[] nums){int length = nums.length;for(int i = length / 2 - 1;i >= 0;i--){my_Sort(nums,i,length);}for(int i = length - 1;i >= 0;i--){int temp = nums[0];nums[0] = nums[i];nums[i] = temp;my_Sort(nums, 0, i);}}public static void my_Sort(int[] nums,int parent,int length){int child = 2*parent + 1;int temp = nums[parent];while(child < length){if(child + 1 < length && nums[child + 1] > nums[child]){child++;}if(temp >= nums[child]){break;}nums[parent] = nums[child];parent = child;child = 2*parent + 1;}nums[parent] = temp;}
}
  1. 首先调用heapSort方法对输入数组nums进行堆排序。
  2. 创建一个空的列表ans用于存储结果。
  3. 遍历排序后的数组,对于每个元素nums[i],如果与前一个元素相同则跳过,避免重复解。
  4. 设置两个指针jk,其中ji+1开始遍历,k从数组末尾开始向前移动。
  5. 如果j与前一个元素相同则跳过,避免重复解。
  6. 在循环中,当nums[k] + nums[j] > -nums[i]时,将k向前移动一位,缩小搜索范围。
  7. 如果k == j,说明没有找到满足条件的三元组,跳出内层循环。
  8. 如果nums[i] + nums[k] + nums[j] == 0,说明找到了一组满足条件的三元组,将其添加到结果列表ans中。
  9. 最后返回结果列表ans

heapsort堆排序部分的实现使用了递归的方式,首先构建大顶堆,然后将堆顶元素与最后一个元素交换,再调整剩余元素形成新的大顶堆,重复这个过程直到整个数组有序。

http://www.tj-hxxt.cn/news/81126.html

相关文章:

  • ps做产品的网站广西网站建设制作
  • 织梦做视频网站互联网培训
  • 横岗网站制作营销技巧美剧
  • 门户网站建站百度开户代理
  • 网站用什么做seo关键词词库
  • 宝安专业网站设计公司网站怎么做谷歌推广
  • 电商网站开发工具网络安全培训最强的机构
  • 哪些网站可以做简历百度搜图匹配相似图片
  • 网站建设是设优化课程设置
  • 网站建设公司有哪些方面seo竞价培训
  • 上海自助建站官网百度公司注册地址在哪里
  • 网站app怎么做的p2p万能搜索种子
  • 大学生创新创业ppt成品seo优化排名易下拉软件
  • 建设企业展示网站搜狗引擎
  • 徐州市中心做网站的公司招聘武汉百度关键词推广
  • 网页制作做网站左侧导航百度网站管理员工具
  • k歌里的相片是通过网站做的吗重庆关键词seo排名
  • app在线生成网站构建新发展格局
  • 哈尔滨网站建设费用企业公司网站建设
  • 在c盘做网站可以吗营销型网站的类型有哪些
  • 农林网站建设免费网络推广网址
  • 找投资项目的网站怎么做好网络营销
  • 用thinkcmf做的网站线上宣传渠道
  • 网络营销的网站建设报告品牌seo是什么
  • 做旅游网站图片哪里找网站优化方案范文
  • 公交公司网站建设的意义seo 知乎
  • 小红书如何引流推广seo快速优化排名
  • 织梦源码网广州网站优化系统
  • 网站怎么做qq客服浙江网站建设推广
  • 贵州企业网站建设价格重庆森林经典台词图片