leetcode 4sum java_从LeetCode用Java实现4sum

小编典典

这是一个O(n ^ 3)解决方案

import java.util.Arrays;

import java.util.ArrayList;

import java.util.HashSet;

public class Solution {

public ArrayList> fourSum(int[] num, int target) {

// Start typing your Java solution below

// DO NOT write main() function

Arrays.sort(num);

HashSet> hSet = new HashSet>();

ArrayList> result = new ArrayList>();

for (int i = 0; i < num.length; i++) {

for (int j = i + 1; j < num.length; j++) {

for (int k = j + 1, l = num.length - 1; k < l;) {

int sum = num[i] + num[j] + num[k] + num[l];

if (sum > target) {

l--;

}

else if (sum < target) {

k++;

}

else if (sum == target) {

ArrayList found = new ArrayList();

found.add(num[i]);

found.add(num[j]);

found.add(num[k]);

found.add(num[l]);

if (!hSet.contains(found)) {

hSet.add(found);

result.add(found);

}

k++;

l--;

}

}

}

}

return result;

}

}

2020-07-28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值