当前位置: 首页 > 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.lryc.cn/news/585548.html

相关文章:

  • OA系统中的搜索功能方案:简单搜索vs高级搜索
  • SpringDataRedis入门
  • c++——浅拷贝和深拷贝、浅赋值和深赋值
  • Django快速入门搭建网站
  • 经典同步问题详解
  • 液冷智算数据中心崛起,AI算力联动PC Farm与云智算开拓新蓝海(二)
  • Apache Cloudberry 向量化实践(三)重塑表达式构建路径:Gandiva 优化实战
  • 2D下的几何变换(C#实现,持续更新)
  • SpringBoot或OpenFeign中 Jackson 配置参数名蛇形、小驼峰、大驼峰、自定义命名
  • SpringCloud之Ribbon
  • BootstrapBlazor与JS互调
  • Semi-Supervised Single-View 3D Reconstruction via Prototype Shape Priors
  • 小智AI模型接入MCP
  • 【一起来学AI大模型】微调技术:LoRA(Low-Rank Adaptation) 的实战应用
  • SQL Server通过CLR连接InfluxDB实现异构数据关联查询技术指南
  • SpringBoot JWT
  • Rust与UE5高效集成实战
  • uniapp制作一个个人页面
  • ffmpeg-api记录
  • UC浏览器PC版自2016年后未再更新不支持vue3
  • 小旺AI截图1.2.1版本上线:新增录屏音频、Mac长截屏
  • Docker高级管理--Dockerfile 镜像制作
  • 手把手一起使用Miniforge3+mamba平替Anaconda(Win10)
  • 机器学习week2-线性回归加强
  • Java的extends通配符
  • netdxf—— CAD c#二次开发之(netDxf 处理 DXF 文件)
  • 和鲸社区深度学习基础训练营2025年关卡2(3)pytorch
  • 利用Claude code,只用文字版系统设计大纲,就能轻松实现系统~
  • 免费应用分发平台的安全漏洞和防护机制是什么?
  • 60 美元玩转 Li-Fi —— 开源 OpenVLC 平台入门(附 BeagleBone Black 驱动简单解析)