热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NK5_给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。

题目描述给出一个有n个元素的数组S,S中是否有元素a,b,c满足abc0?找出数组S中所有满足条件的三元组。注意:三元组(a

  • 题目描述
    给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。

  • 注意:
    三元组(a、b、c)中的元素必须按非降序排列。(即a≤b≤c)
    解集中不能包含重复的三元组。

  • 例如,给定的数组 S = {-10 0 10 20 -10 -40},解集为(-10, 0, 10) (-10, -10, 20)

  • 我的解答
    最low的思想,必超时(脑子啊脑子啊)

import java.util.ArrayList;
import java.util.Arrays;
public class Solution {public ArrayList<ArrayList<Integer>> threeSum(int[] num){ArrayList<ArrayList<Integer>> list &#61; new ArrayList<>();ArrayList<Integer> list_small &#61; new ArrayList<>();Arrays.sort(num);for(int i &#61; 0;i<num.length;i&#43;&#43;){for(int j &#61; i &#43; 1;j<num.length;j&#43;&#43;){for(int k &#61; j &#43; 1;k<num.length;k&#43;&#43;){if(num[i] &#43; num[j] &#43; num[k] &#61;&#61; 0){list_small.add(num[i]);list_small.add(num[i]);list_small.add(num[i]);list.add(list_small);list_small.clear();}}}}return list;}
}

  • 通过解答
    思想&#xff1a;先排序&#xff0c;然后外层循环 固定开始元素1 &#xff0c;设置 两个指针&#xff0c;一个指针start指向元素2&#xff08;元素2初始为元素1的下一个&#xff09;&#xff0c;一个指针end指向元素3&#xff08;元素3初始为最后一个&#xff09;
    内层循环&#xff08;能找到3个元素条件start

import java.util.ArrayList;
import java.util.Arrays;
public class Solution {public ArrayList<ArrayList<Integer>> threeSum(int[] num){//结果集合ArrayList<ArrayList<Integer>> list &#61; new ArrayList<>();//排序Arrays.sort(num);//从 第一个元素到 倒数第二个元素&#xff0c;外层循环配合内层循环 判断 含当前元素的每种情况&#xff0c;内层循环筛选符合条件的for(int i &#61; 0;i<num.length - 2;i&#43;&#43;){// 当前元素的下一个元素int start &#61; i &#43; 1;//最后一个元素int end &#61; num.length - 1;//还够3个元素while(start < end){//此轮的三个元素和int sum &#61; num[i] &#43; num[start] &#43; num[end];//因为已经排好序&#xff0c;需要向移动下标向0靠近//需要中间指针更大的值if(sum < 0){start&#43;&#43;;}//需要末尾指针更小的值else if(sum > 0){end--;}//等于 0 的情况&#xff0c;添加小集合到 大集合中else{ArrayList<Integer> list_small &#61; new ArrayList<>();list_small.add(num[i]);list_small.add(num[start]);list_small.add(num[end]);if(!list.contains(list_small)){list.add(list_small);}//继续判断 是否还有含 num[i] 的不同组合start&#43;&#43;;end--;}}}return list;}
}

推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • importjava.util.ArrayList;publicclassPageIndex{privateintpageSize;每页要显示的行privateintpageNum ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
author-avatar
手机用户2502853923
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有