美文网首页算法和数据结构
java实现 数组中两元素相加等于指定数的所有组合

java实现 数组中两元素相加等于指定数的所有组合

作者: Ferrari1001 | 来源:发表于2018-03-28 13:41 被阅读90次

题目大意:

  给一个正整数列表alist和指定正整数T,每个数只能用一次,返回两元素相加之和等于指定数的所有组合的链表。形如:alist = [1,2,3,4,4,,5,6,7] T = 8 ,返回链表[[1,7],[2,6],[3,5],[4,4]].

思路:

  遍历一遍链表,利用Set集合元素的唯一性,记录中间处理过程。

代码实现:

**
 * @author lm
 * @create 2018-03-28 10:20
 * @desc 返回整形列表中所有元素相加之和等于目标值的元素列表
 **/
public class GettingList {

    public List<ArrayList<Integer>> getList(List<Integer> list, int target) {

        List<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();
        Set<Integer> set = new HashSet<>();
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            ArrayList<Integer> subList = new ArrayList<>();
            int temp = iterator.next();
            if (temp == target) {
                subList.add(temp);
            }else if (set.contains(target - temp)) {
                subList.add(temp);
                subList.add(target - temp);
            }
            set.add(temp);
            if (subList.size() != 0) {
                lists.add(subList);
            }
        }
        return lists;
    }
}

//测试用例
public class GettingListTest {

    @Test
    public void getList() throws Exception {
        GettingList gettingList = new GettingList();
        ArrayList<Integer> lists = new ArrayList<>();
        lists.add(1);
        lists.add(3);
        lists.add(5);
        lists.add(4);
        lists.add(2);
        lists.add(7);
        lists.add(6);
        lists.add(4);
        int target = 8;
        assertEquals(4, gettingList.getList(lists, target).size());

    }
}

要点:

  
【1】利用Set集合中元素唯一性的特点,
【2】集合的嵌套的声明及实例化(泛型参数要一致)。

相关文章

  • TwoSum

    题目大意: 找到数组中两个元素相加等于指定数的所有组合 情况一:给定数组中不含重复元素,且均为正整数 思路: 使用...

  • java实现 数组中两元素相加等于指定数的所有组合

    题目大意: 给一个正整数列表alist和指定正整数T,每个数只能用一次,返回两元素相加之和等于指定数的所有组合的链...

  • 数组中两个元素相加等于指定数的所有组合

    思路1:穷举法,两层for循环 思路2:可以用hash表来存储数组中的元素,这样我们取得一个数后,去判断sum -...

  • 7.23练习

    1.计算给定数组arr中所有元素的总和,数组中的元素均为 Number 类型 2.找出元素 item 在给定数组 ...

  • 2018-11-21

    Q: 实现如下需求 给定数组a,如上,返回一个新的数组,数组元素中增加一个z,z的值等于x + y返回结果应如下 A:

  • 【骚全带你学Java---九、认识java数组】

    java中数组 数组是指一组数据的集合,数组中的每个数据称为元素。在Java中,数组也是Java对象。数组中的元素...

  • 牛客JS题目练习

    1、找出元素 item 在给定数组 arr 中的位置 2、计算给定数组 arr 中所有元素的总和 3、移除数组 a...

  • leetcode 1 两数相加

    java解法 解题思路:常规解法为,先选定一个元素,遍历数组去查找是否存在另一个元素,和这个元素相加等于总和,这样...

  • LeetCode 724. 寻找数组的中心下标

    题目 给你一个整数数组 nums ,请计算数组的中心下标。数组中心下标是数组的一个下标,其左侧所有元素相加的和等于...

  • ECMAScript之filter()和reduce()。

    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。 reduce() ...

网友评论

    本文标题:java实现 数组中两元素相加等于指定数的所有组合

    本文链接:https://www.haomeiwen.com/subject/hesycftx.html