当前位置: 首页> 汽车> 时评 > 品牌营销策划师_龙岗网站制作市场_baidu百度一下_百度怎么创建自己的网站

品牌营销策划师_龙岗网站制作市场_baidu百度一下_百度怎么创建自己的网站

时间:2025/7/9 15:45:51来源:https://blog.csdn.net/qq_51352130/article/details/142306846 浏览次数: 0次
品牌营销策划师_龙岗网站制作市场_baidu百度一下_百度怎么创建自己的网站

文章目录

  • 题目介绍
  • 解法

题目介绍

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

解法

思路和 15. 三数之和 一样,排序后,枚举 nums[a] 作为第一个数,枚举 nums[b] 作为第二个数,那么问题变成找到另外两个数,使得这四个数的和等于 target,这可以用双指针解决。

代码如下:

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {Arrays.sort(nums);List<List<Integer>> ans = new ArrayList<>();int n = nums.length;for (int a = 0; a < n - 3; a++) { // 枚举第一个数if (a > 0 && nums[a] == nums[a - 1]) continue; // 跳过重复数字for (int b = a + 1; b < n - 2; b++) { // 枚举第二个数if (b > a + 1 && nums[b] == nums[b - 1]) continue; // 跳过重复数字int l = b + 1;int r = n - 1;while (l < r) { // 双指针枚举第三个数和第四个数// nums[a]、nums[b]、nums[l] 和 nums[r] 都是 int 类型的值。//当四个 int 值相加时,它们的和可能会超出 int 类型的最大值。因此需要将其中一个值//转换为 long 类型来避免溢出。这里选择了将 nums[a] 转换为 long 类型,然后与其他三个 int 值相加。long s = (long) nums[a] + nums[b] + nums[l] + nums[r]; // 四数之和,使用 long 避免溢出if (s > target) r--;else if (s < target) l++;else { // s == targetans.add(List.of((int) x, (int) y, nums[l], nums[r]));for (l++; l < r && nums[l] == nums[l - 1]; l++) ; // 跳过重复数字for (r--; r > l && nums[r] == nums[r + 1]; r--) ; // 跳过重复数字}}}}return ans;}
}
关键字:品牌营销策划师_龙岗网站制作市场_baidu百度一下_百度怎么创建自己的网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: