美文网首页算法和数据结构
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】集合的嵌套的声明及实例化(泛型参数要一致)。

    相关文章

      网友评论

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

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