• 4 sum


    太麻烦了只好用Backtracking

    public List<List<Integer>> fourSum(int[] nums, int target) {
            List<List<Integer>> ans = new ArrayList<List<Integer>>();
            if(nums == null || nums.length == 0) return ans;
            List<Integer> list = new ArrayList<>();
            Arrays.sort(nums);
            getSum(nums, 0, target, ans, list, 0);
            return ans;
        }
        private void getSum(int[] nums, int sum, int target, List<List<Integer>> ans, List<Integer> list, int pos){
            if(list.size() == 4 && sum == target && !ans.contains(list)){
                ans.add(new ArrayList<>(list)); return;
            }else if(list.size() == 4) return;
            for(int i = pos; i < nums.length; i++){
                if(nums[i] +  nums[nums.length - 1] * (3 - list.size()) + sum < target) continue;
                if(nums[i] * (4 - list.size()) + sum > target) return;
                list.add(nums[i]);
                getSum(nums, sum + nums[i], target, ans, list, i + 1);
                list.remove(list.size() - 1);
            }
        }
  • 相关阅读:
    第十一周编程总结
    第十周编程总结
    第九周
    第八周
    第七周编程总结
    第六周编程总结
    学期总结
    第十四周课程总结&实验报告(简单记事本的实现)
    第十三周课程总结
    第十二周课程总结
  • 原文地址:https://www.cnblogs.com/immiao0319/p/16214971.html
Copyright © 2020-2023  润新知