当前位置:网站首页>力扣18-四数之和——双指针法
力扣18-四数之和——双指针法
2022-08-10 19:01:00 【张怼怼√】
题目描述
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):
0 <= a, b, c, d < n
a、b、c 和 d 互不相同
nums[a] + nums[b] + nums[c] + nums[d] == target
你可以按 任意顺序 返回答案 。
求解思路
- 这道题目和三数之和就是一样的做法,就是在原来的基础上增加一层循环。
力扣15-三数之和——HashSet&双指针法力扣15-三数之和——HashSethttps://blog.csdn.net/weixin_44564247/article/details/126250012
只是在官方的测试用例中有一个超出边界的示例,所以需要将int类型转为long。
输入输出示例
代码
class Solution {
public List<List<Integer>> fourSum(int[] nums, int target) {
Arrays.sort(nums);
Set<List<Integer>> set = new HashSet<>();
for(int i = 0; i < nums.length; i++){
for(int j = i + 1; j < nums.length; j++){
int left = j + 1;
int right = nums.length - 1;
while(left < right){
if((long)nums[i] + nums[j] + nums[left] + nums[right] == target){
set.add(new ArrayList<>(Arrays.asList(nums[i] , nums[j] , nums[left] , nums[right])));
left++;
right--;
}else if((long)nums[i] + nums[j] + nums[left] + nums[right] <target){
left++;
}else right--;
}
}
}
List<List<Integer>> res = new ArrayList<>(set);
return res;
}
}
边栏推荐
- postgis空间数据导入及可视化
- 如何通过JMobile软件实现虹科物联网HMI/网关的报警功能?
- 让mixin为项目开发助力【及递归优化新尝试】
- FEMRL: A Framework for Large-Scale Privacy-Preserving Linkage of Patients’ Electronic Health Rec论文总结
- 优化是一种习惯●出发点是'站在靠近临界'的地方
- 【深度学习前沿应用】图像风格迁移
- 剖析Framework面试—>>>冲击Android高级职位
- 消息队列初见:一起聊聊引入系统mq 之后的问题
- 2022-08-09 Study Notes day32-IO Stream
- 宝塔部署flask项目
猜你喜欢
随机推荐
[Go WebSocket] Your first Go WebSocket server: echo server
flask生成路由的2种方式和反向生成url
AIRIOT答疑第8期|AIRIOT的金字塔服务体系是如何搞定客户的?
JVM内存和垃圾回收-11.执行引擎
openssl查看证书信息
QoS服务质量七交换机拥塞管理
剑指 Offer 27. 二叉树的镜像(翻转二叉树)
CAS:190598-55-1_Biotin sulfo-N-hydroxysuccinimide ester生物素化试
whois信息收集&企业备案信息
Keras深度学习实战(17)——使用U-Net架构进行图像分割
多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU)
QoS服务质量六路由器拥塞管理
补坑求逆序对
网站架构探测&chrome插件用于信息收集
【OpenCV】-物体的凸包
基于 RocksDB 实现高可靠、低时延的 MQTT 数据持久化
FPGA工程师面试试题集锦71~80
新建离线同步节点时选择数据去向-表时报错,数据库类型是adb pg,怎么办?
pip3升级到22.2.2
产品思维训练 | 新用户从注册到绑卡流失率很高是什么原因?