- 博客(8)
- 收藏
- 关注
原创 【leetcode算法】42. 接雨水
文章摘要:两种方法解决接雨水问题,核心思路都是计算每列水量=min(左右最高墙)-当前高度。方法一使用动态规划预处理左右最大值数组,时间O(n)空间O(n)。方法二用双指针优化空间至O(1),通过比较左右当前最高值,每次处理更矮的一侧,确保水量计算正确性。两种方法都保证线性时间复杂度,第二种在空间上更优。
2025-10-20 20:19:19
535
原创 【leetcode算法】11.盛最多水的容器
摘要:本文讨论如何找出两条垂线与x轴构成的最大盛水容器。使用双指针法,初始时分别指向数组两端,计算当前面积并更新最大值。关键策略是每次移动较短的指针,以期望在宽度减小的同时找到更高的边界来提升面积下限。算法时间复杂度为O(n),空间复杂度为O(1)。通过这种贪心策略,能够高效地找到最优解。
2025-10-19 21:52:48
519
原创 【leetcode算法】15.三数之和
对余下区间用两指针 l=i+1、r=n-1 寻找 nums[i]+nums[l]+nums[r]==0;// 如果当前数加上最大的两个数仍然小于0,说明当前数太小,需要换更大的数。
2025-10-15 02:25:42
503
原创 【leetcode算法】167. 两数之和 II - 输入有序数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。
2025-10-12 08:00:00
215
原创 【JAVA八股文】Java基础
String、StringBuilder和StringBuffer的主要区别体现在可变性、线程安全和性能上。String不可变,线程安全但效率低;StringBuilder可变且线程不安全,效率最高;StringBuffer可变且线程安全,但效率略低。String适用于不频繁修改的场景,StringBuilder适合单线程频繁操作,StringBuffer适用于多线程环境。选择时应根据线程安全和性能需求决定。
2025-10-11 18:10:35
445
原创 【leetcode算法】977.有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。定义一个新数组result,和A数组一样的大小,让k指向result数组终止位置。--right 即右边平方后指针往左边靠拢,都是往中间指,直到排序完成。++left 即左边平方后指针往右边靠拢。i指向起始位置,j指向终止位置。暴力解法,逐个平方后排序。k--即从后往前以此排,
2025-10-11 15:54:31
512
原创 【Leetcode算法】27.移除元素
示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。// 慢指针:指向新数组的当前位置。// 慢指针的位置就是新数组的长度。
2025-10-11 15:12:19
298
转载 Leetcode算法704.二分查找
思路:前提是使用二分查找的话,数组内无重复元素,接下来在二分查找中保持区间不变量,而区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。(right - left) >> 1 = 6 >> 1 = 3 // 区间长度的一半(6÷2=3)
2025-10-10 19:52:20
28
【JAVA毕业设计】-校园租赁系统
2025-10-19
【Web开发部署】GitHub与Vercel集成指南:Next.js应用全链路发布及环境配置实战
2025-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅