恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

文心大模型 LeetCode 15.三数之和 C++实现

  • 首页
  • 资讯中心
  • /
  • 文心大模型 LeetCode 15.三数之和 C++实现

相关资讯

Neo4j 5.26 Windows 部署完整指南:从安装配置到知识图谱构建 2026/8/29 4:23:51
不会写代码也能做SaaS?AI编程助手从0到上线的实战路径 2026/8/29 4:18:51
内存价格重回2007年高位:开发者的内存优化与成本应对指南 2026/8/29 4:18:51

最新资讯

CCF-CSP认证备考:从知识点到问题模式的四大核心能力构建
涂鸦智能一面面经:IoT场景下的Java技术考察与复盘
关于28考研和智能车无人机项目的存档及复盘纠错
YOLOv13改进策略【基础篇】| 评价指标详解:混淆矩阵、IoU、mAP、F1、参数量、计算量一文打尽
爱奇艺算法工程师笔试复盘:KMP、动态规划与拓扑排序考点解析
Python 高级语法笔记:深浅拷贝、迭代器、生成器、命名空间、作用域、闭包、装饰器

今日推荐

云计算SPI三类服务模式是逐层抽象的关系:IaaS提供最底层的硬件资源,PaaS在IaaS基础上封装了开发运行环境,SaaS则进一步封装为可直接使用的软件
最新稳定版(Python 3.14):这是目前官方推荐的最新稳定版本。作为最后一个采用传统“3.x”命名的版本
etc目录下的profile.d文件目录设置环境变量和全局脚本shell

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

文心大模型 LeetCode 15.三数之和 C++实现

发布时间:2026/8/29 4:23:51
文心大模型    LeetCode 15.三数之和 C++实现 # LeetCode 15. 三数之和 - C 实现## 解题思路排序 双指针1. 对数组排序2. 固定第一个数 nums[i]双指针在 [i1, n-1] 中找两数之和 -nums[i]3. 三处去重避免重复三元组**时间复杂度**: O(n²)**空间复杂度**: O(log n)排序栈空间---## C 实现cpp#include vector#include algorithmusing namespace std;class Solution {public:vectorvectorint threeSum(vectorint nums) {vectorvectorint result;int n nums.size();if (n 3) return result;sort(nums.begin(), nums.end()); // 排序for (int i 0; i n - 2; i) {// ① 去重跳过重复的第一个数if (i 0 nums[i] nums[i - 1])continue;// ② 剪枝最小值 0后面不可能有解if (nums[i] 0)break;int left i 1;int right n - 1;int target -nums[i]; // 需要找的两数之和while (left right) {int sum nums[left] nums[right];if (sum target) {result.push_back({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 target) {left;}else {right--;}}}return result;}};---## 测试代码cpp#include iostreamint main() {Solution sol;// 测试用例 1vectorint nums1 {-1, 0, 1, 2, -1, -4};vectorvectorint res1 sol.threeSum(nums1);cout Test 1: ;for (auto v : res1) {cout [;for (int j 0; j v.size(); j) {cout v[j] (j v.size()-1 ? , : );}cout ] ;}// 输出: [-1, -1, 2] [-1, 0, 1]cout endl;// 测试用例 2vectorint nums2 {0, 1, 1};vectorvectorint res2 sol.threeSum(nums2);cout Test 2: ;for (auto v : res2) {cout [;for (int j 0; j v.size(); j) {cout v[j] (j v.size()-1 ? , : );}cout ] ;}// 输出: (空)cout endl;// 测试用例 3vectorint nums3 {0, 0, 0};vectorvectorint res3 sol.threeSum(nums3);cout Test 3: ;for (auto v : res3) {cout [;for (int j 0; j v.size(); j) {cout v[j] (j v.size()-1 ? , : );}cout ] ;}// 输出: [0, 0, 0]return 0;}---## 关键要点总结| 要点 | 说明 ||------|------|| 排序 | sort(nums.begin(), nums.end()) || 剪枝 | nums[i] 0 时直接 break因为后面全是正数 || 去重① | i 0 nums[i] nums[i-1] 跳过重复第一个数 || 去重②③ | 找到解后left/right 跳过相同值再移动 || 边界 | n 3 直接返回空 |---## 执行流程图解排序后: [-4, -1, -1, 0, 1, 2]i0: nums[i]-4, target4left1,right5: -121 4 → leftleft2,right5: -121 4 → leftleft3,right5: 022 4 → leftleft4,right5: 123 4 → leftleft5,right5: 结束i1: nums[i]-1, target1left2,right5: -121 ✓ → [-1,-1,2]left3,right4: 011 ✓ → [-1, 0,1]i2: nums[i]-1, 与i1相同 → skipi3: nums[i]0, target0left4,right5: 123 0 → right--left4,right4: 结束# LeetCode 15. 三数之和 - C 实现## 解题思路排序 双指针1. 对数组排序2. 固定第一个数 nums[i]双指针在 [i1, n-1] 中找两数之和 -nums[i]3. 三处去重避免重复三元组**时间复杂度**: O(n²)**空间复杂度**: O(log n)排序栈空间---## C 实现cpp#include vector#include algorithmusing namespace std;class Solution {public:vectorvectorint threeSum(vectorint nums) {vectorvectorint result;int n nums.size();if (n 3) return result;sort(nums.begin(), nums.end()); // 排序for (int i 0; i n - 2; i) {// ① 去重跳过重复的第一个数if (i 0 nums[i] nums[i - 1])continue;// ② 剪枝最小值 0后面不可能有解if (nums[i] 0)break;int left i 1;int right n - 1;int target -nums[i]; // 需要找的两数之和while (left right) {int sum nums[left] nums[right];if (sum target) {result.push_back({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 target) {left;}else {right--;}}}return result;}};---## 测试代码cpp#include iostreamint main() {Solution sol;// 测试用例 1vectorint nums1 {-1, 0, 1, 2, -1, -4};vectorvectorint res1 sol.threeSum(nums1);cout Test 1: ;for (auto v : res1) {cout [;for (int j 0; j v.size(); j) {cout v[j] (j v.size()-1 ? , : );}cout ] ;}// 输出: [-1, -1, 2] [-1, 0, 1]cout endl;// 测试用例 2vectorint nums2 {0, 1, 1};vectorvectorint res2 sol.threeSum(nums2);cout Test 2: ;for (auto v : res2) {cout [;for (int j 0; j v.size(); j) {cout v[j] (j v.size()-1 ? , : );}cout ] ;}// 输出: (空)cout endl;// 测试用例 3vectorint nums3 {0, 0, 0};vectorvectorint res3 sol.threeSum(nums3);cout Test 3: ;for (auto v : res3) {cout [;for (int j 0; j v.size(); j) {cout v[j] (j v.size()-1 ? , : );}cout ] ;}// 输出: [0, 0, 0]return 0;}---## 关键要点总结| 要点 | 说明 ||------|------|| 排序 | sort(nums.begin(), nums.end()) || 剪枝 | nums[i] 0 时直接 break因为后面全是正数 || 去重① | i 0 nums[i] nums[i-1] 跳过重复第一个数 || 去重②③ | 找到解后left/right 跳过相同值再移动 || 边界 | n 3 直接返回空 |---## 执行流程图解排序后: [-4, -1, -1, 0, 1, 2]i0: nums[i]-4, target4left1,right5: -121 4 → leftleft2,right5: -121 4 → leftleft3,right5: 022 4 → leftleft4,right5: 123 4 → leftleft5,right5: 结束i1: nums[i]-1, target1left2,right5: -121 ✓ → [-1,-1,2]left3,right4: 011 ✓ → [-1, 0,1]i2: nums[i]-1, 与i1相同 → skipi3: nums[i]0, target0left4,right5: 123 0 → right--left4,right4: 结束

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号