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

【优选算法】7----三数之和

来了来了,他来了,又是学习算法的一天~

今天的嘉宾是中等难度的算法题----三数之和!

------------------------------------------begin------------------------------------

题目解析:

哇趣!又是给了一个数组,又是需要我们在一个数组中进行操作,但这次不是二元那么简单了,而

是三元~

讲解算法原理:

方法一:肯定还是暴力解法啦,直接三个for循环编译,时间复杂度直接爆炸,包不通过的~(所以

不推荐)

方法二:基于暴力算法,我们才可以进行优化算法,还是需要我们的老朋友left和right指针来进行

编译,同样我们需要多加一个对象来固定一个数,题目要求三数相加为0,所以我们可以定义一个

target来取所固定的相反数来与left和right位置的值的和来进行比较,判断~

编写代码:

class Solution 
{
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>>ret;sort(nums.begin(),nums.end());int n=nums.size();for(int i=0;i<n;){if(nums[i]>0){break;}int left=i+1,right=n-1,target=-nums[i];while(left<right){int sum=nums[left]+nums[right];if(sum>target){right--;}else if(sum<target){left++;}else{ret.push_back({nums[i],nums[left],nums[right]});right--;left++;while(left<right&&nums[right]==nums[right+1]){right--;} while(left<right&&nums[left]==nums[left-1]){left++;}}}i++;while(i<n&&nums[i]==nums[i-1]){i++;}}return ret;}
};

题目还是有点复杂的,不过多画图还是有用的哦~

题目直达->

15. 三数之和 - 力扣(LeetCode)

------------------------------------------end--------------------------------------

http://www.lryc.cn/news/525822.html

相关文章:

  • 分子动力学模拟里的术语:leap-frog蛙跳算法和‌Velocity-Verlet算法
  • 2025年数学建模美赛:A题分析(1)Testing Time: The Constant Wear On Stairs
  • 利用 SoybeanAdmin 实现前后端分离的企业级管理系统
  • 996引擎 - 前期准备-配置开发环境
  • Tensor 基本操作4 理解 indexing,加减乘除和 broadcasting 运算 | PyTorch 深度学习实战
  • 【Uniapp-Vue3】request各种不同类型的参数详解
  • 【Prometheus】Prometheus如何监控Haproxy
  • SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别
  • HTML5 常用事件详解
  • TCP全连接队列
  • 统计文本文件中单词频率的 Swift 与 Bash 实现详解
  • iOS 权限管理:同时请求相机和麦克风权限的最佳实践
  • Excel 实现文本拼接方法
  • 软考信安27~Windows操作系统安全相关
  • 从 Spark 到 StarRocks:实现58同城湖仓一体架构的高效转型
  • WordPress Hunk Companion插件节点逻辑缺陷导致Rce漏洞复现(CVE-2024-9707)(附脚本)
  • 使用 HTML 开发 Portal 页全解析
  • 机器学习(二)
  • Laravel 实战:用Carbon筛选最近15分钟内的数据
  • Ubuntu20.04 文件系统打不开
  • vue3的组件v-model(defineModel()宏)
  • 在 Ubuntu 22.04 上安装 Kubernetes(Kubeadm 安装方式)
  • 2_高并发内存池_各层级的框架设计及ThreadCache(线程缓存)申请内存设计
  • Java算法——排序
  • 【Python・机器学习】多元回归模型(原理及代码)
  • mysql数据被误删的恢复方案
  • 使用EasyExcel(FastExcel) 的模板填充报Create workbook failure
  • [C]基础8.详解操作符
  • MySQL篇之对MySQL进行参数优化,提高MySQL性能
  • Vue 3 的 keep-alive 及生命周期钩子