leetcode 4Sum(Java)

来源:互联网 发布:网一网络加速器官网 编辑:程序博客网 时间:2024/05/18 02:20

题目链接:点击打开链接

类型:数学处理

解法:

public class Solution {    public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> result = new ArrayList<List<Integer>>();int len = nums.length;if (nums == null || len < 4)return result;Arrays.sort(nums);if (4 * nums[0] > target || 4 * nums[len - 1] < target)return result;for (int i = 0 ; i < len-3 ; ++i){if (i != 0 && nums[i] == nums[i-1]){continue;}for (int j = i+1 ; j < len-2 ; ++j){if (j != i+1 && nums[j] == nums[j-1]){continue;}int k = j+1;int l = len-1;while(k < l){int sum = nums[i]+nums[j]+nums[k]+nums[l];if (sum > target){--l;}else if (sum < target){++k;}else{List<Integer> temp = new LinkedList<Integer>();temp.add(nums[i]);temp.add(nums[j]);temp.add(nums[k]);temp.add(nums[l]);result.add(temp);++k;--l;while (k < l && nums[k] == nums[k-1]){++k;}while (k < l && nums[l] == nums[l+1]){--l;}}}}}return result;            }}


原创粉丝点击