【打卡】牛客网:BM54 三数之和

资料:

1. 排序:Sort函数

升序:默认。

降序:加入第三个参数,可以greater<type>(),也可以自己定义

本题中发现,sort居然也可以对vector<vector<int>>排序。 

C++ Sort函数详解_zhangbw~的博客-CSDN博客

自己写的:

感觉我写的就是排列组合。

感觉时间复杂度很大,应该超过O(n^2)。

class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param num int整型vector* @return int整型vector<vector<>>*/vector<vector<int> > threeSum(vector<int>& num) {// write code herevector<vector<int> > res;for (int i = 0; i < num.size(); i++) { for (int j = i + 1; j < num.size() - 1; j++) { // 粗心,是j = i + 1,不是j = iif (find(num.begin() + j + 1, num.end(), -num[i] - num[j]) != num.end()) { //存在这样的[a,b,c]vector<int> temp = {num[i], num[j],  -num[i] - num[j]}; // 粗心,不是temp = {i, j, -i-j};sort(temp.begin(), temp.end());if (find(res.begin(), res.end(), temp) == res.end()) //之前没出现过这样的[a,b,c]res.push_back(temp);}}}sort(res.begin(), res.end()); //题目中没说要排序啊!return res;}
};

模板的:

  • 两个指针单向移动。保证答案的完整性。
  • 三个值移动时都去重。保证答案的去重性。
  • 处理边界的时候,需要思考很久。所以还是死记这种方法!!
  • 由于两个指针在第二个循环里一起移动,所以时间复杂度确实是O(n^2).
class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param num int整型vector* @return int整型vector<vector<>>*/vector<vector<int> > threeSum(vector<int>& num) {// write code herevector<vector<int> > res;int n = num.size();if(n < 3)return res;sort(num.begin(), num.end()); // 粗心,忘记for(int i = 0; i < n-2; i++){// 去重if( i != 0 && num[i] == num[i-1]){  //粗心,不是num[i] == num[i+1]// i++; //粗心,不需要++的continue;}int left = i + 1;int right = n - 1;while(left < right){if(num[i]+num[left]+num[right]== 0){res.push_back({num[i], num[left], num[right]}); //这种初始化!while(left + 1 < right && num[left] == num[left+1]){ // 去重left ++; }while(right - 1 > left && num[right] == num[right-1]){ // 去重right --;}left ++; //粗心,忘记right --; //粗心,忘记}else if (num[i]+num[left]+num[right] < 0)left ++;elseright --;}}return res;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axure9 基本操作(二)

1. 文本框、文本域 文本框&#xff1a;快速实现提示文字与不同类型文字显示的效果。 2. 下拉列表、列表框 下拉列表&#xff1a;快速实现下拉框及默认显示项的效果。 3. 复选框、单选按钮 4.

Mysql JSON 类型 索引查询 操作

JSON 类型操作 String 类型的 JSON 数组建立索引&查询语句 --索引添加 ALTER TABLE table_name ADD INDEX idx_json_cloumn ((cast(json_cloumn->"$[*]" AS CHAR(255) ARRAY))); --查询 explain select * from table_name tcai where JSON_CONTAINS(json_cl…

Linux 本地zabbix结合内网穿透工具实现安全远程访问浏览器

前言 Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 本地zabbix web管理界面限制在只能局域…

关于400G光模块的常见问题解答

最近在后台收到了很多用户咨询关于400G光模块的信息&#xff0c;那400G光模块作为当下主流的光模块类型&#xff0c;有哪些问题是备受关注的呢&#xff1f;下面来看看小易的详细解答&#xff01; 1、什么是400G QSFP-DD光模块&#xff1f; 答&#xff1a;400G光模块是指传输速…

linux下安装python3.8(有坑)

1安装包下载 ###直接官网下载linux版本&#xff0c;找到对应的包 https://www.python.org/downloads/source/2安装包解压 tar -zxvf Python-3.8.0.tgz 3编译安装 1&#xff09;设置安装目录&#xff0c;比如在此创建在 /usr/local/python3 &#xff1a; mkdir -p /usr/loca…

MLIR笔记(2)

3. LVM有趣的代码 3.1. dyn_cast()与cast() C支持类型间的自动转换&#xff08;如operator 声明的转换&#xff09;&#xff0c;但在转换的调用链里自动转换只能调用一次&#xff0c;这固然是避免给编译器带来过分的复杂性&#xff0c;但更重要的是允许自动转换接力调用几乎很…

在windows下vs c++运行g2o的BA优化程序示例

目录 1、前言2、准备工作安装git安装vcpkg&#xff08;1&#xff09;下载&#xff08;2&#xff09;安装&#xff08;3&#xff09;集成至vs 安装cmake 3、安装g2o4、安装opencv&#xff08;1&#xff09;下载&#xff08;2&#xff09;双击安装&#xff08;3&#xff09;环境变…

Behave介绍和快速示例

Behave是一个用于行为驱动开发 (Behavior-Driven Development, BDD) 的 Python 库。使用 Behave&#xff0c;可以编写自然语言格式的使用场景来描述软件的行为&#xff0c;然后用 Python 实现这些场景下的步骤&#xff0c;形成可直接运行的测试。 Behave的目标是帮助用户、开发…

图片转换到PDF

把一系列图片整合到PDF格式 Python代码 import os from io import BytesIO from PIL import Imageos.environ[NLS_LANG] SIMPLIFIED CHINESE_CHINA.UTF8 SUPPORT_SUFFIX ["jpg", "jpeg", "png"]def pic_to_pdf(image_bytes: bytes) -> byt…

【入门Flink】- 09Flink水位线Watermark

在窗口的处理过程中&#xff0c;基于数据的时间戳&#xff0c;自定义一个“逻辑时钟”。这个时钟的时间不会自动流逝&#xff1b;它的时间进展&#xff0c;就是靠着新到数据的时间戳来推动的。 什么是水位线 用来衡量事件时间进展的标记&#xff0c;就被称作“水位线”&#x…

你不懂API接口是什么?怎么和程序员做朋友

说到开发平台就一定离不开接口&#xff0c;作为PM&#xff0c;我们不需要对接口了解的特别细。只需要知道接口是什么&#xff0c;有什么用&#xff0c;有哪些要素就行。 1. 接口是什么 (1) 硬件接口 生活中我们经常会接触接口&#xff0c;最常见的就是HDMI接口和USB接口&…

计算机毕业设计选题推荐-公共浴池微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

我这些年对于自动化测试的理解

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

Redis运行为什么快

前言 Redis目前被广泛使用&#xff0c;离不开他的快&#xff0c;毕竟“天下武功&#xff0c;唯快不破”。但是Redis不止是有快这个优点&#xff0c;这里先简单了解Redis运行快的原理 一、数据存储在内存中 首先&#xff0c;Redis之所以可以运行的这么快&#xff0c;得益于Red…

环境配置 | Git的安装及配置[图文详情]

Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从小到大的项目版本管理。下面介绍了基础概念及详细的用图文形式介绍一下git安装过程. 目录 1.Git基础概念 2.Git的下载及安装 3.常见的git命令 Git高级技巧 Git与团队协作 1.Git基础概念 仓库&#…

沉浸式航天vr科普馆VR太空主题馆展示

科普教育从小做起&#xff0c;现在我们的很多地方小孩子游乐体验不单单只有草坪玩耍体验&#xff0c;还有很多科普知识的体验馆和游玩馆。虽然现在我们还不能真实的上太空或者潜入海底&#xff0c;但是这些现在已经可以逼真的展示在我们面前。通过一种虚拟现实技术手段。人们带…

在3+1的方向上展开结构加法4a3+4a14

4a3 4a14 - - 1 - - - - - - - - - - - - - 1 1 1 - 1 1 - 1 - - 1 - - - 要求得到的图片只能有4个点&#xff0c;并且需要最大限度的保留4a3和4a14两张图片的内在结构特征。 4个点的结构总可以认为是3个点的结构1合成的 - - 1 - - …

只使用JS怎么给静态页面网站添加站内全局搜索功能?

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 背景 静态页面通常由HTML、CSS 和 JavaScript…

酷开系统 酷开科技,将家庭娱乐推向新高潮

在当今数字化时代&#xff0c;家庭娱乐已经成为人们日常生活中不可或缺的一部分。如果你厌倦了传统的家庭娱乐方式&#xff0c;想要一种全新的、充满惊喜的娱乐体验&#xff0c;那么&#xff0c;不妨进入到酷开科技的世界&#xff0c;作为智能电视行业领军企业&#xff0c;酷开…

华为交换机的基本配置,看完秒懂

一、 交换机的基本配置 交换机连接方式 本地&#xff1a;计算机COM口/USB口 --> Console线 --> 交换机Console口 远程&#xff1a;Putty、SecureCRT、Xshell远程管理工具 华为VRP网络操作系统 1&#xff09;华为的视图模式 <Huawei> //用户视图&#x…