当前位置: 首页 > news >正文

leetcode hot100刷题日记——37.三数之和

在这里插入图片描述
在这里插入图片描述
解答:
首先将nums进行排序,更方便做。
三元组三个数,可以看成如何取这三个数。
第一层循环:看着第一个数的指针。
第二层循环:看着第二个数的指针。
第三个数自然而然从数组的最后一个数字开始找满足-(num1+num2)的数字

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {int n=nums.size();sort(nums.begin(),nums.end());vector<vector<int>> ans;//i是第一个指针,指向三元组的第一个数for(int i=0;i<n;i++){//但是不能和之前的数相同,因为结果中不含有相同的三元组if(i>0&&nums[i]==nums[i-1]){continue;}//k指向三元组的第三个数int k=n-1;int target=-nums[i];//枚举三元组的第二个数for(int j=i+1;j<n;j++){// 需要和上一次枚举的数不相同if(j>i+1&&nums[j]==nums[j-1]){continue;}//需要保证第二个数在第三个数的左侧while(j<k&&nums[j]+nums[k]>target){--k;//如果后两个指针的和大于target,说明第三个数需要小一些}if(j==k){break;}if(nums[j]+nums[k]==target){ans.push_back({nums[i],nums[j],nums[k]});}}}return ans;}
};

时间复杂度:O(n^2)
空间复杂度:O(logn)(排序)

http://www.lqws.cn/news/108433.html

相关文章:

  • 【HarmonyOS 5】鸿蒙APP使用【团结引擎Unity】开发的案例教程
  • SQL进阶之旅 Day 13:CTE与递归查询技术
  • 农业机器人的开发
  • QUIC——UDP实现可靠性传输
  • RTOS,其高级使用
  • 网络安全问题及对策研究
  • STM32学习之WWDG(原理+实操)
  • [Python] python信号处理绘制信号频谱
  • LeetCode Hot100刷题——完全平方数
  • 【PmHub面试篇】Gateway全局过滤器统计接口调用耗时面试要点解析
  • AXURE-动态面板
  • unity UI Canvas“高”性能写法
  • JavaScript 对象展开语法
  • 从零打造AI面试系统全栈开发
  • 灵光一现的问题和常见错误4
  • 【macbook】触控板手势
  • 软件工程的定义与发展历程
  • CSP模式下如何保证不抖动
  • 【操作系统原理08】文件管理
  • 十.显式类型转换
  • superior哥AI系列第6期:Transformer注意力机制:AI界的“注意力革命“
  • Dispatch PDI V2.04 发布预告
  • [概率论基本概念4]什么是无偏估计
  • 服务端定时器的学习(一)
  • pycharm如何查看git历史版本变更信息
  • Windows清理之后,资源管理器卡顿-解决方法
  • MyBatis 一级缓存与二级缓存
  • ElasticStack对接kafka集群
  • Delphi SetFileSecurity 设置安全描述符
  • 隧道监测预警系统:构筑智慧交通的安全中枢