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

【18. 四数之和 】

Leetcode算法练习 笔记记录

  • 18. 四数之和

18. 四数之和

这题其实和三数之和差不多,相当于同一个板子,具体可以看-> 三数之和或者看灵神讲解b站灵神讲解

 public List<List<Integer>> fourSum(int[] nums, int target) {int n = nums.length;Arrays.sort(nums);List<List<Integer>> ans = new ArrayList<>();for (int i = 0; i < n - 3; i++) {//枚举第一个数long x=nums[i];//跳过重复的数if (i > 0 && x == nums[i - 1]) {continue;}//优化1 最小的数都比target大,说明没有目标数组if (x+nums[i+1]+nums[i+2]+nums[i+3]>target){break;}//优化2 加上任意3个数都比目标值小,说明当前x不够大跳过本次if(x+nums[n-3]+nums[n-2]+nums[n-1]<target){continue;}//枚举第二个数for (int j = i + 1; j < n - 2; j++) {long y = nums[j];if (j > i + 1 && y == nums[j - 1]) {continue;}int k = j + 1;int l = n - 1;while (k<l){long s = x + y + nums[k] + nums[l];if (s > target){l--;}else if (s < target){k++;}else{ans.add(new ArrayList<>(Arrays.asList((int)x, (int)y, nums[k], nums[l])));for (k++; k < l && nums[k] == nums[k - 1]; k++) ;for (l--; k < l && nums[l] == nums[l + 1]; l--) ;}}}}return ans;}

相关文章:

  • 内存屏障指令
  • 人工智能价值:技术革命下的职业新坐标
  • 信息系统项目进度管理实践:从规划到控制的全流程解析
  • 【笔记】快速安装Poetry
  • 趣味编程:抽象图(椭圆组成)
  • 【Python-Day 16】代码复用基石:详解 Python 函数的定义与调用
  • C++继承:从生活实例谈面向对象的精髓
  • 学习Android(十二)Thread
  • 深度解析 Element Plus
  • java上机测试错题回顾(1)
  • Ubuntu学习记录
  • EXIST与JOIN连表比较
  • Flink基本理解
  • 缓存穿透、缓存击穿、缓存雪崩解决方案
  • MySQL 索引详解与原理分析
  • Typescript总结篇——配置TS、基础知识(类型、接口、类型别名、泛型、extendsinfer关键字)
  • 递归+反射+注解(动态拼接建表语句)
  • BitsAndBytesConfig参数描述
  • RESTful风格
  • C++网络编程入门学习(四)-- GDB 调试 学习 笔记
  • 基金网站建设网站/西安网站外包
  • 亚马逊德国做deals 网站/线上销售方案
  • 武汉网页制作/百度seo效果怎么样
  • wordpress评论通知代码6/seo sem推广
  • 通州富阳网站建设/seo推广方案怎么做
  • 个人如何做网站推广/网站优化排名哪家好