关注
算法题:三数之和
题目描述:
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
解题思路:
1. 首先对数组进行排序,方便后续的去重操作。
2. 遍历数组,将当前元素作为第一个数,然后在剩下的元素中使用双指针法找到另外两个数,使得三个数的和为 0。
3. 在双指针法中,左指针指向当前元素的下一个元素,右指针指向数组的最后一个元素。如果当前三个数的和小于 0,则将左指针右移一位;如果当前三个数的和大于 0,则将右指针左移一位;如果当前三个数的和等于 0,则将这三个数加入结果集中。
4. 为了避免重复,需要在遍历数组时去重。具体来说,如果当前元素和前一个元素相同,则跳过当前元素。
代码实现:
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
Arrays.sort(nums);
for (int i = 0; i < nums.length - 2; i++) {
if (i > 0 && nums[i] == nums[i - 1]) {
continue;
}
int left = i + 1;
int right = nums.length - 1;
while (left < right) {
int sum = nums[i] + nums[left] + nums[right];
if (sum == 0) {
res.add(Arrays.asList(nums[i], nums[left], nums[right]));
while (left < right && nums[left] == nums[left + 1]) {
left++;
}
while (left < right && nums[right] == nums[right - 1]) {
right--;
}
left++;
right--;
} else if (sum < 0) {
left++;
} else {
right--;
}
}
}
return res;
}
}
时间复杂度:O(n^2)
空间复杂度:O(logn)
查看原帖
点赞 2
相关推荐
昨天 17:41
长春电子科技学院 前端工程师 smile丶snow:1.简历尽量一页,比如教育经历那里,全日制,计算机学院这些可以去掉没啥用好浪费空间。
熟悉三件套就没必要写了吧。js基本上是这样写
* JavaScript核心:深入理解 JS 运行机制(事件循环 Event Loop、微任务/宏任务),熟练掌握 Promise/Async 异步编程 模型。
熟悉可以改成熟练掌握。组件库写一个ant感觉就行,多写了浪费空间。
旅游项目是不是jonas的natours啊,我之前简历也有这个。我之前是这样写的
全栈思维: 熟悉 Node.js/Express 后端架构,掌握 MongoDB 数据库设计与聚合查询
工程化我觉得还是少些吧,不写就问的少,如果你真的了解的话可以写。
1.实习的话推荐大厂官网和aoob上面投,我自己有写一个校招网站的小网站可以直达~github主页上面有,顺便求个关注(
2.大三下一般课程比较少了吧,如果学校比较严的话可以多沉淀一会,如果不太严可以请dai课然后去实习,尽量找个近一些的就行。暑期实习不是暑假才实习哦,基本是上3月底4月初发offer就可以过去了,然后大概暑假的时候走转正流程答辩。
3.大厂算法题+js手写体。hot100+常见的比如数组转树,Promise.all,deepClone,之类 js手写都不难其实。算法看自己能力吧,我其实算法能力也不行。
4.自己平时没有用AI Coding吗?自己想一下怎么让AI帮你更好的写代码~比如Skill的诞生,OpenSpec的诞生,不都是我们想让AI更好帮我们写代码吗。
点赞 评论 收藏
分享
黄苏婷:小哥哥好棒,加油!希望后面多多更新,争取拿到字节的offer
查看13道真题和解析 点赞 评论 收藏
分享
03-11 14:23
南阳理工学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你的实习产出是真实的还是包装的? #
11500次浏览 161人参与
# AI面会问哪些问题? #
7972次浏览 202人参与
# 米连集团26产品管培生项目 #
11392次浏览 270人参与
# 春招至今,你的战绩如何? #
37386次浏览 319人参与
# 你做过最难的笔试是哪家公司 #
11397次浏览 84人参与
# 长得好看会提高面试通过率吗? #
15997次浏览 163人参与
# 厦门银行科技岗值不值得投 #
925次浏览 95人参与
# 从事AI岗需要掌握哪些技术栈? #
2742次浏览 78人参与
# 找AI工作可以去哪些公司? #
2563次浏览 51人参与
# 工作丧失热情的瞬间 #
374570次浏览 2573人参与
# 沪漂/北漂你觉得哪个更苦? #
5775次浏览 102人参与
# 阿里笔试 #
163654次浏览 1165人参与
# 一张图晒出你司的标语 #
2022次浏览 28人参与
# HR最不可信的一句话是__ #
3281次浏览 65人参与
# AI时代,哪个岗位还有“活路” #
6585次浏览 176人参与
# AMA #
18416次浏览 62人参与
# 秋招后遗症 #
76517次浏览 433人参与
# 春招你拿到offer了吗 #
817777次浏览 9912人参与
# 学历对求职的影响 #
651475次浏览 4168人参与
# 什么专业适合考公 #
57690次浏览 295人参与
# 简历第一个项目做什么 #
34646次浏览 554人参与
# 秋招结束之后的日子 #
125027次浏览 1082人参与
