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

LeetCode Hot100 (双指针)

283. 移动零

标记指针,当前位置为0向后面移动即可

 class Solution {public void moveZeroes(int[] nums) {int l = 0;for(int i=0;i<nums.length;i++){if(nums[i]==0){if(l<i){l=i+1;}while(l<nums.length&&nums[l]==0) l++;if(l<nums.length){nums[i]=nums[l];nums[l]=0;l++;}}}String s=nums.toString();System.out.println(s);}
}

 11.成最多水的容器

一个比较简单的做法,我们可以直接从高进行枚举,看看水会淹没到哪个位置,双指针左右移动即可

class Solution {public int maxArea(int[] height) {int maxx=0;for(int i=0;i<height.length;i++){maxx=Math.max(height[i],maxx);}int l=0;int ans=0;int r=height.length-1;int n=r-1;for(int i=1;i<=maxx;i++){while(l<=n&&height[l]<i){l++;}while(r>=0&&height[r]<i){r--;}if(r<=l){break;}ans=Math.max((r-l)*i,ans);}return ans;}
}

15.三数之和

我们注意到数字不能有重复的,我们对数组进行排序之后,固定最左边位置的数字,然后枚举右边的两个数字即可,为了降低时间复杂度,双指针维护

class Solution {public List<List<Integer>> threeSum(int[] nums) {List< List<Integer> >res = new ArrayList<>();Arrays.sort(nums);
//        System.out.println(Arrays.toString(nums));for(int i = 0; i < nums.length ; i++){if(i>0){if(nums[i]==nums[i-1]){continue;}}if(nums[i]>0){continue;}int l=i+1;int r=nums.length-1;while(l<r){while(l<=r&&nums[l]+nums[r]+nums[i]<0){l++;}while(l<r&&nums[l]+nums[r]+nums[i]>0){r--;}if(l>=r){break;}if(nums[i]+nums[l]+nums[r]==0){List<Integer>arr=List.of(nums[i],nums[l],nums[r]);res.add(arr);}l++;while(l<nums.length&&nums[l]==nums[l-1]){l++;}}}return res;}
}

42. 接雨水

最简单的困难题

实际上每一个点看看前面的最大值和后面的最大值,也就是那两个可以把他包围起来,然后两个最大值取个较小值就ok了

class Solution {public  int trap(int[] height) {if(height.length==0){return 0;}int []maxx1=new int[height.length+3];int []maxx2=new int[height.length+3];maxx1[0]=height[0];for(int i=1;i<height.length;i++){maxx1[i]=Math.max(maxx1[i-1],height[i]);}for(int i=height.length - 1;i>=0;i--){maxx2[i]=Math.max(maxx2[i+1],height[i]);}int ans=0;for(int i=1;i<height.length - 1;i++){int f=ans;ans=ans+Math.max(0,Math.min(maxx1[i-1],maxx2[i+1])-height[i]);}return ans;}
}

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

相关文章:

  • 什么是出入库管理系统?2025年五大出入库管理软件推荐
  • 部署TOMEXAM
  • (tarjan 缩点)洛谷 P3119 USACO15JAN Grass Cownoisseur G 题解
  • 文章被检测出是AI写的怎么办?
  • 手写Tomcat(二)—Tomcat简化模型架构
  • 2023河南CCPC省赛vp部分补题
  • 电子墨水电子阅读器行业2025数据分析报告
  • 如果教材这样讲--碳膜电阻、金属氧化膜电阻、金属膜电阻、保险丝电阻、绕线电阻的区别和用途
  • 618服饰大促新打法:在抖音解锁增长三连击
  • 深入理解 PlaNet(Deep Planning Network):基于python从零实现
  • 50、js 中var { ipcRenderer } = require(‘electron‘);是什么意思?
  • Android System UI 深度解析:从架构演进到车载 / TV 场景的全维度定制
  • go中len和sizeof区别
  • 初学c语言18(自定义类型:结构体)
  • 【DAY26】函数专题1:函数定义与参数
  • 供应链管理:联合国/我国 41个产业/工业大类包括什么/代表公司
  • 【25软考网工】第七章(4)DHCP、DNS
  • 深入理解 BFC:网页布局的关键机制
  • 其他有关Oracle BUFFER CACHE的优化思路
  • Java Spring Boot 集成 Redis 存储 Session:对象修改与 Redis 值更新
  • 2025年排名前五的费控管理软件
  • 封装红黑树实现mymap和myset
  • 密码分析学:从理论框架到实战攻防的全维度解析
  • 编程日志5.17
  • AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘错误解决方法
  • Redis 的速度为什么这么快
  • Windows命令实用工具——tcping 命令工具安装及基础使用
  • 帕鲁杯证书在线生成-仅供娱乐
  • 车载网关设计原则 ---- 透明性与诊断可追溯性
  • 第十八章 I2C通信测试