当前位置:网站首页>力扣15-三数之和——HashSet&双指针法
力扣15-三数之和——HashSet&双指针法
2022-08-09 18:54:00 【张怼怼√】
题目描述
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
求解思路
因为题目答案中可能会有重复的三元组,所以需要对结果去重,但是发现集合set本身就不允许重复元素存在,所以采用HashSet来存储结果;
题目求解采用双指针法;
定义left和right,分别指向 i+1 和 nums.length-1 的元素,然后遍历nums,和之前一样;
这个地方需要注意当我们需要把普通的数组add进ArrayList需要做转换:Arrays.toList;
最后需要将HashSet转换为ArrayList,需要再做一次转换。
输入输出示例
代码
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
Set<List<Integer>> res = new HashSet<>();
Arrays.sort(nums);
for(int i = 0; i < nums.length; i++){
int left = i + 1, right = nums.length - 1;
while(left < right){
if(nums[i] + nums[left] + nums[right] == 0){
res.add(new ArrayList<>(Arrays.asList(nums[i],nums[left],nums[right])));
left++;
right--;
}else if(nums[i] + nums[left] + nums[right] < 0){
left++;
}else{
right--;
}
}
}
List<List<Integer>> ress = new ArrayList<>(res);
return ress;
}
}
边栏推荐
- vim编辑器使用
- 时序攻击
- 面试官:MySQL 中 update 更新,数据与原数据相同时会执行吗?大部分人答不上来!
- [Free Column] Android Fragment Injection for Android Security
- php删除字符串的空格
- 【kali-权限提升】(4.2.7)社会工程学工具包:权限维持创建后门、清除痕迹
- Laravel之队列「建议收藏」
- Environment: Flink version: 1.15.1 jar package: flink-sql-connector-oracle
- AttributeError: module 'click' has no attribute 'get_os_args'
- EsgynDB Troubleshooting - ERROR[2012] Server process tdm_arkesp could not becreated
猜你喜欢
随机推荐
基于CC2530 E18-MS1-PCB Zigbee DIY作品
hdu 2647 Reward(拓扑排序)
工大科雅深交所上市:市值45亿 齐承英家族是大股东
华为云创新中心助力启泰智能 补齐中小模具企业数字化能力短板
Laravel之队列「建议收藏」
力扣 899. 有序队列
[Free Column] Android Fragment Injection for Android Security
Toronto Research Chemicals盐酸乙环胺应用说明
典型的数据仓库模型实施过程详解
uniapp离线推送华为厂商申请流程
【IoT毕设】STM32与机智云自助开发平台的宠物智能喂养系统
小满nestjs(第六章 nestjs cli 常用命令)
Flume (六) --------- Flume 数据流监控
Leetcode 739.每日温度 单调栈
请问一下flink cdc mysql source 报这种错怎么处理呢?我都设置了useSSL=f
[Free Column] Android Security for Peace Elite (FZ) APK Reverse Analysis
解决执行Command报错executable file not found in $PATH
OpenSSL SSL_read: Connection was reset, errno 10054
MFC tutorial
Start cleaning up the long-term divers in the electronic chart development group again