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

题目大意:

  给一个正整数列表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】集合的嵌套的声明及实例化(泛型参数要一致)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,416评论 0 4
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 893评论 0 1
  • 今天是断食的第二天,体重已经下降到58公斤。这个结果还是令到我比较满意的。精神非常的好,中途也没有饿的迹象...
    法紫阅读 548评论 0 2
  • 是大阪烧风味鸡胸和小星星厚蛋烧~ 鸡胸提前一晚放冷冻室解冻,解冻的时候加上盐、糖、黑胡椒和蜂蜜 起床后先烧水,把土...
    森酱森酱阅读 352评论 0 1
  • “欧式奢华,雍容华贵;贵族风范,流光溢彩”——这样的句式,你是不是很熟悉?中国地界上满大街的“托斯卡纳”“枫丹白露...
    茶边求阅读 1,501评论 1 8