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

双指针-15. 三数之和

文章目录

      • 1.题解
      • 2.机考代码
      • 3.知识点讲解
        • 1.res.add(Arrays.asList(nums[i], nums[l], nums[r]));
        • 2.Arrays常用方法
          • 大厂机考 / 算法题里 Arrays 只需要掌握这 5 个
            • 1. Arrays.sort(nums) —— 排序(最常用)
            • 2. Arrays.toString(nums) —— 打印数组
            • 3. Arrays.asList(...) —— 快速生成 List
            • 4. Arrays.binarySearch(nums, target) —— 二分查找
            • 5. Arrays.copyOf(nums, newLength) —— 数组复制
          • 极简总结(背这个就行)

力扣地址: 中等:15. 三数之和

1.题解

classSolution{publicList<List<Integer>>threeSum(int[]nums){List<List<Integer>>res=newArrayList<>();Arrays.sort(nums);for(inti=0;i<nums.length;i++){if(i>0&&nums[i]==nums[i-1])continue;intl=i+1,r=nums.length-1;while(l<r){intsum=nums[i]+nums[l]+nums[r];if(sum==0){res.add(Arrays.asList(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--;}elseif(sum<0)l++;elser--;}}returnres;}}

2.机考代码

importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;importjava.util.Scanner;publicclassMain{publicstaticList<List<Integer>>threeSum(int[]nums){List<List<Integer>>res=newArrayList<>();Arrays.sort(nums);for(inti=0;i<nums.length;i++){// 去重if(i>0&&nums[i]==nums[i-1])continue;intl=i+1,r=nums.length-1;while(l<r){intsum=nums[i]+nums[l]+nums[r];if(sum==0){res.add(Arrays.asList(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--;}elseif(sum<0)l++;elser--;}}returnres;}publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);// 输入格式:第一行输入数组长度,第二行输入数组元素intn=sc.nextInt();int[]nums=newint[n];for(inti=0;i<n;i++){nums[i]=sc.nextInt();}// 调用算法List<List<Integer>>result=threeSum(nums);// 输出结果(机考标准格式)for(List<Integer>list:result){System.out.println(list);}}}

3.知识点讲解

1.res.add(Arrays.asList(nums[i], nums[l], nums[r]));
Arrays.asList(3,2,8):把这几个元素转成List
2.Arrays常用方法
大厂机考 / 算法题里 Arrays 只需要掌握这 5 个

其他都不用记,算法里几乎用不到


1. Arrays.sort(nums) —— 排序(最常用)

作用:对数组从小到大排序。
场景

  • 两数之和、三数之和、四数之和
  • 贪心、双指针、去重
int[]nums={-1,0,1,2};Arrays.sort(nums);// 结果:[-1, 0, 1, 2]

2. Arrays.toString(nums) —— 打印数组

作用:把数组变成好看的字符串,方便调试/输出。
直接打印数组名是地址,必须用这个

int[]a={1,2,3};System.out.println(Arrays.toString(a));// 输出:[1, 2, 3]

3. Arrays.asList(…) —— 快速生成 List

作用:把几个元素 / 数组转成 List。
你三数之和那题就在用

List<Integer>list=Arrays.asList(1,2,3);// 你那题写法:res.add(Arrays.asList(nums[i],nums[l],nums[r]));

注意:
返回的 List不能 add/remove,但算法题只用来存结果,完全够用。


4. Arrays.binarySearch(nums, target) —— 二分查找

作用:在已排序数组中找 target,返回下标。
找不到返回负数。

intidx=Arrays.binarySearch(nums,5);

5. Arrays.copyOf(nums, newLength) —— 数组复制

作用:复制一个新数组。
场景:不想修改原数组时。

int[]newArr=Arrays.copyOf(nums,nums.length);

极简总结(背这个就行)
  1. 排序Arrays.sort(nums)
  2. 打印Arrays.toString(nums)
  3. 转ListArrays.asList(a,b,c)
  4. 二分Arrays.binarySearch
  5. 复制Arrays.copyOf

机考/算法题 99% 只用这 5 个,其他方法一律不用看。

http://www.cnnetsun.cn/news/1587527.html

相关文章:

  • 图像修复新范式:用PromptIR同时处理模糊/噪点/雨雾(附对比实验)
  • 手把手教你读懂STM32的MAP文件:从内存分配到符号表全解析
  • 网络调试神器 Netcat for Windows:你的命令行网络瑞士军刀
  • Obsidian插件国际化完全指南:从问题到解决方案的全方位解析
  • 2026年分享8个超级实用的个人简历模板网站,直接填内容自动排版
  • Redis 持久化机制超详细详解(RDB+AOF 双方案 + 生产实战)
  • 别只盯着GPU:用DELL R720搭建深度学习Server,这些‘古董’配件才是关键
  • Cadence布局元器件:Room属性设置与快速摆放技巧
  • 避开Keys命令坑!用RedisTemplate实现集群安全的Scan模糊查询(附完整代码)
  • 别再只盯着功耗了!理解Wi-Fi STA的TIM/DTIM,才是优化设备续航的关键
  • LumiPixel Canvas Quest提示词反推(Interrogator)工具使用教程
  • A股订单簿处理技术全解析:从原理到实践的低延迟交易系统构建指南
  • FPGA驱动14K超高清屏:MIPI DSI接口的实战解析与点屏全流程
  • FastAPI OpenAPI扩展:如何利用链接关系构建更智能的API
  • iOS性能深度优化工具:thermalmonitordDisabler系统级调控方案
  • 【数据结构】字符串模式匹配:暴力算法与 KMP 算法实现与解析
  • MiniCPM-o-4.5-nvidia-FlagOS处理Markdown文档效果:使用Typora风格进行优雅排版
  • GLM-OCR快速上手:开箱即用的专业级OCR服务部署指南
  • REST API资源命名最佳实践:RestApiTutorial.com专家建议
  • CHIPSEC硬件抽象层揭秘:深入理解平台安全评估的技术实现
  • 老旧设备系统升级技术解析:4步实战指南让旧Mac焕发新生
  • 海思Hi3519AV100 emmc模式Linux系统移植实战:从SDK编译到Hitool烧写全解析
  • 如何在Windows上快速安装Android应用:APK-Installer完整指南
  • 如何快速上手Dalli:10分钟学会memcached客户端配置
  • 10个企业级Windows自动化场景:pywinauto终极应用指南
  • Android图片取色实战:如何用getPixel精准获取任意位置RGB值(附完整Demo)
  • EfficientViT语义分割深度解析:从Cityscapes到实时应用
  • Windows智能温控完全指南:用开源工具破解风扇噪音与散热平衡难题
  • 如何通过Windows Cleaner实现C盘空间释放:提升系统性能的完整指南
  • 万字详解:现象级OpenClaw(俗称“龙虾”)能做什么-周红伟