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

力扣面试150(29/100)

7.11 15. 三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。

**注意:**答案中不可以包含重复的三元组。

我的思路:

我最开始想的就是固定一个数,然后移动双指针找到剩下的两个值。一直答案错误,看了一下题解,他也是差不多的,只是在双指针遍历的时候,和我有差别,我是直接在固定的那个数后面找,但是它是设置了一个左指针和一个右指针,在两数之和有序数组的基础上进行修改的。但是有一个很重要的问题,就是去重

 while (left < right && nums[left] === nums[left + 1]) left++;while (left < right && nums[right] === nums[right - 1]) right--;left++;right--;}

我的代码:

/*** @param {number[]} nums* @return {number[][]}*/
var threeSum = function(nums) {let i = 0 ; let ans = [];nums.sort((a , b) => a - b);for(i ; i < nums.length - 2 ; i++){// 去重if(i > 0 && nums[i - 1] === nums[i]){continue;}// 先固定一个数字let left = i + 1;let right = nums.length - 1 ;while(left < right){let sum = nums[i] + nums[left] + nums[right];if(sum > 0){right--;}else if (sum < 0){left++;}else if (sum === 0){ans.push([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--;}}}return ans;};
//  我的思路:
//  -n + n = 0
//  先用双指针先求出+n ,然后遍历第二个指针找到-n

总结:

先对数组排序,然后固定一个数,再用双指针法在剩余部分寻找另外两个数,使得三数之和为零,同时通过跳过重复元素来避免重复解

7.12 209. 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target

找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0

我的思路:就是滑动i和j,如果sum>target就代表可以减少一个数字了,i++,sum也要减,要是sum<target酒标掉需要添加数字,j++

我的代码:

var minSubArrayLen = function(target, nums) {let i = 0 ; let j = 0;let min = Infinity;let sum = nums[i] ;while(j < nums.length && i < nums.length){if(sum < target){j++;sum += nums[j];}else if(sum >= target){min = min > j - i + 1 ? j - i + 1 : min;sum -= nums[i];i++;}}if(min === Infinity){return 0}else {return min;}};

总结:使用滑动窗口法,在数组中寻找和至少为 target 的最短连续子数组的长度,如果不存在则返回 0

http://www.xdnf.cn/news/1101007.html

相关文章:

  • 问题 C: 为美好的世界献上爆炎(博弈论)
  • 如何在 Windows 10 上安装设置 Apache Kafka
  • 聊聊AI大模型的上下文工程(Context Engineering)
  • 你见过的最差的程序员是怎样的?
  • Redis底层数据结构
  • CSS3的核心功能介绍及实战使用示例
  • 提示工程:解锁大模型潜力的核心密码
  • 库存订单管理系统:3月份开源项目汇总
  • linux中cmake编译项目
  • Django母婴商城项目实践(二)
  • 1.1.2 运算符与表达式——AI教你学Django
  • 3.检查函数 if (!CheckStart()) return 的妙用 C#例子
  • Vue3 Pinia
  • php中调用对象的方法可以使用array($object, ‘methodName‘)?
  • DSPy:用编程思维驯服大模型的新范式
  • 2025年主流数据库连接池推荐:从原理到场景的深度解析
  • Java 大视界 -- Java 大数据在智能医疗远程手术机器人操作数据记录与分析中的应用(342)
  • 传输层协议UDP原理
  • 二分查找1
  • JavaScript加强篇——第五章 DOM节点(加强)与BOM
  • 企业培训笔记:Vue3前端框架配置
  • 销售数据可视化分析项目
  • 专题:2025云计算与AI技术研究趋势报告|附200+份报告PDF、原数据表汇总下载
  • 如何选择数据可视化工具?从设计效率到图表表现力全解读
  • Spring之我见-Spring循环依赖为啥是三级缓存?
  • uniApp实战五:自定义组件实现便捷选择
  • Hadoop 用户入门指南:驾驭大数据的力量
  • 如何将文件从OPPO手机传输到电脑
  • crmeb多门店对接拉卡拉支付小程序聚合收银台集成全流程详解
  • UniApp 生命周期详解:从启动到销毁的完整指南