LeetCode 18 四数之和
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 18 四数之和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://leetcode-cn.com/problems/4sum/
解決方案
class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {int n = nums.length;Arrays.sort(nums);List<List<Integer>> ans = new ArrayList<>();for (int i = 0; i < n - 3; i++) {if (i > 0 && nums[i] == nums[i - 1]) continue;for (int j = i + 1; j < n - 2; j++) {if (j > i + 1 && nums[j] == nums[j - 1]) continue;for (int k = j + 1; k < n - 1; k++) {if (k > j + 1 && nums[k] == nums[k - 1]) continue;int target0 = -nums[i] - nums[j] - nums[k] + target;int l = k + 1, r = n - 1;while (l <= r) {int mid = (l + r) >> 1;if (nums[mid] > target0) {r = mid - 1;} else if (nums[mid] < target0) {l = mid + 1;} else {ans.add(Arrays.asList(nums[i], nums[j], nums[k], target0));break;}}}}}return ans;} }總結
以上是生活随笔為你收集整理的LeetCode 18 四数之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 17 电话号码的字母组
- 下一篇: LeetCode 19 删除链表的倒数第