首页 > 其他分享 >周一

周一

时间:2023-05-15 18:44:22浏览次数:31  
标签:nums ++ sum -- while result 周一

题目描述:

给你一个整数数组 nums,请编写一个函数来判断其中是否存在三个元素,满足它们相加之和等于 0 。请返回所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。

设计思路:
首先对数组进行排序,然后使用双指针法进行遍历数组,将三数之和问题转化为两数之和问题,固定一个数作为基准数nums[i],然后在其后面的数中使用双指针法求出另外两个数字的和等于基准数的相反数即可。

程序流程图:

开始
定义二维数组result来存储所有符合条件的三元组
将数组nums进行排序
for i = 0 to n-2 do
if (i > 0 and nums[i] == nums[i-1]) continue
l = i + 1
r = n - 1
while l < r do
sum = nums[i] + nums[l] + nums[r]
if sum == 0 then
将当前符合条件的三元组加入result中
while l < r and nums[l] == nums[l+1] do l++
while l < r and nums[r] == nums[r-1] do r--
l++
r--
else if sum < 0 then l++
else r--
end for
返回result
结束
代码实现:
#include<iostream>
using namespace std;
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> result;
sort(nums.begin(), nums.end());
int n = nums.size();
for (int i = 0; i < n-2; i++) {
if (i > 0 && nums[i] == nums[i-1]) continue;
int l = i + 1, r = n - 1;
while (l < r) {
int sum = nums[i] + nums[l] + nums[r];
if (sum == 0) {
result.push_back({nums[i], nums[l], nums[r]});
while (l < r && nums[l] == nums[l+1]) l++;
while (l < r && nums[r] == nums[r-1]) r--;
l++;
r--;
} else if (sum < 0) {
l++;
} else {
r--;
}
}
}
return result;
}
};

标签:nums,++,sum,--,while,result,周一
From: https://www.cnblogs.com/zeyangshuaige/p/17402785.html

相关文章

  • 5月15日周一
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写,接口调试是怎么实现的解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段......
  • Readability下周一在Amazon Appstore独家推出
          上个星期我们介绍了一款能将网页制作成电子书的浏览器Readability,当时这一应用只有iOS版本,而现在这一应用的Android版本也即将推出,对于Android用户来说真是个好消息。         Readability的主要竞争对手包括ReaditLater和Instapaper,前者是一个原生Andr......
  • 每周一记11
    提示工程(Prompt Engineering)” 这一概念源于语言模型的发展,它描述了如何有效地利用提示从语言模型中提取信息的过程,通常应用于现实世界的应用场景中。许多声称正在进行提示工程的人实际上只是在盲目地给出提示。我用 “盲目提示(Blind Prompting)” 这个术语来描述这种创建提示......
  • 周一
    问题描述给定一维数组,要求将其按照升序排序,并输出排序后的结果。设计思路声明一个整型数组 arr,并读入数组元素的值。使用冒泡排序算法对数组进行排序:内外嵌套循环遍历数组中的元素。如果当前元素大于下一个元素,则交换两个元素的位置。输出排序后的数组。程序流程图......
  • 5月8日周一
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写,借口调试是怎么实现的解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段......
  • 获取时间段内每周一
    原文:java获取时间段内的所有星期一_java获取一段时间内的周一_程序媛的格子衫的博客-CSDN博客  大神原文,指定某个时间端,指定需要星期几,返回时间段内指定星期几的日期字符串点击查看代码/***@paramargs*@throwsException*/publicstaticvoid......
  • 周一
    #include<iostream>usingnamespacestd;classRectangle{public:Rectangle(inttop,intleft,intbottom,intright);~Rectangle(){}intgetTop()const{returntop;}intgetLeft()const{returnleft;}intgetBottom()const{returnbo......
  • 周一打卡
    问题描述:有一百块钱,要买100只鸡。公鸡5元一只,母鸡3元一只,小鸡1元三只。问要买几只公鸡、母鸡和小鸡?设计思路:这是一道数学问题,可以用穷举法解决。首先,循环公鸡的数量,然后在循环母鸡的数量,最后计算小鸡的数量,判断是否符合题目要求(钱数和数量)。程序流程图:1.循环公鸡的数......
  • 2023年4月24日周一
    一周计划完成毕设初稿还要写测试部分了解调试功能,mock功能如何实现的知道接口怎么回事,尝试或明白一个接口怎么写精简代码学习angular框架回顾上一周的博客执行09点09分  学习了解angularJS框架,没做,看了会儿3月29日晚的博客09点18分  解决页面颜色的小问题,......
  • 2023/4/23每周一记
    getcap提权,redis-cli写码,docker提权,备份提权当我们需要将本地8080端口映射到远程服务器上的80端口时,可以使用以下命令:ssh-L8080:localhost:80user@remote此时只需要访问neo4j初始化验证账号密码时,需要关闭网页翻译插件,否则会报错redis-cli写马configsetdir/vat/www......