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

leetcode-三数之和

视频:https://www.bilibili.com/video/BV1bP411c7oJ/?spm_id_from=333.788&vd_source=dd84879fcf1be72f360461b01ecab0d6

从两数之和开始,排序后的两数之和,利用好升序的性质,可以将时间复杂度从on2降到on;
在这里插入图片描述

class Solution {public int[] twoSum(int[] numbers, int target) {//暴力没有利用好数组已经排好序的特性int i=0,j=numbers.length-1;while(i<j){//优化后 最小+最大 花了o1时间得到onint sum=numbers[i]+numbers[j]; //相加if(sum==target){return new int[]{i+1,j+1}; //直到找到答案}else if(sum<target){//小于 i++;i++;}else{//大于J--;j--;}}return null;}
}

//首先个数组排序 三数之和本质和两数之和是一样的;

class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);//i j kint n = nums.length;int j = 0;int k = 0;List<List<Integer>> ans = new ArrayList<>();if (n == 3) {if (nums[0] + nums[1] + nums[2] == 0) {List<Integer> list = new ArrayList<Integer>();list.add(nums[0]);list.add(nums[1]);list.add(nums[2]);ans.add(list);}}for (int i = 0; i < n - 3; i++) {if (i > 0 && nums[i] == nums[i - 1]) {continue;}if (nums[i] + nums[i + 1] + nums[i + 2] > 0) {//如果现在都大于0了 直接break;break;}j = i + 1; k = n - 1;while (j < k) {int s = nums[i] + nums[j] + nums[k]; //三个数字之和if (s > 0) {k = k - 1;} else if (s < 0) {j = j + 1;} else {List<Integer> list = new ArrayList<Integer>();list.add(nums[i]);list.add(nums[j]);list.add(nums[k]);ans.add(list); //找到一个符合的//因为是不能重复的,所以此时还需要移动 j和k的值j += 1; while (j < k && nums[j] == nums[j - 1]) j++;k -= 1;while (j < k && nums[k] == nums[k + 1]) k--;}}}return ans;}
}

相关文章:

  • 第一章 应急响应- Linux入侵排查
  • windows 11 PC查询连接过的wlan密码
  • 高通Android 12 设置Global属性为null问题
  • 数据库——单表查询
  • 机械臂泡水维修|机器人雨后进水维修措施
  • [AWS]CodeCommit的创建与使用
  • sqlalchemy事件监听
  • 路由上传一个ui_control参数(uint32类型)控制页面UI显隐
  • firefly rk3288 ubuntu23.10 网卡名为end0 改为eth0
  • 【webpack开发环境下的配置】
  • 原码、补码、反码、移码是什么?
  • 如何理解 Composition API 和 Options API
  • Linux C++ realpath函数crash的解决方法
  • Spock单元测试框架使用介绍和实践
  • linux中当前目录、上级目录、上上级目录表示方法
  • create-react-app项目添加less配置
  • css选择器
  • github从入门到放弃(1)
  • IP路由与转发
  • Java IO学习笔记一
  • JavaScript-Array类型
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Mysql数据库的条件查询语句
  • scrapy学习之路4(itemloder的使用)
  • Shell编程
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Transformer-XL: Unleashing the Potential of Attention Models
  • Xmanager 远程桌面 CentOS 7
  • 从零搭建Koa2 Server
  • 简析gRPC client 连接管理
  • 开源地图数据可视化库——mapnik
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 算法---两个栈实现一个队列
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 阿里云服务器购买完整流程
  • # Java NIO(一)FileChannel
  • # 透过事物看本质的能力怎么培养?
  • ######## golang各章节终篇索引 ########
  • #etcd#安装时出错
  • $.ajax()方法详解
  • (12)Linux 常见的三种进程状态
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C)一些题4
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (vue)页面文件上传获取:action地址
  • (八)Flask之app.route装饰器函数的参数
  • (规划)24届春招和25届暑假实习路线准备规划
  • (六)Flink 窗口计算
  • (三)SvelteKit教程:layout 文件
  • (四)事件系统
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)fock函数详解