LeetCode--缺失的第一个正数(41)和 接雨水(42)
创始人
2025-05-31 01:10:27

目录

缺失的第一个正数

接雨水

0ms,100% 代码


缺失的第一个正数

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/first-missing-positive


题目:给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

示例 1:

输入:nums = [1,2,0]
输出:3

示例 2:

输入:nums = [3,4,-1,1]
输出:2

示例 3:

输入:nums = [7,8,9,11,12]
输出:1

提示:

    1 <= nums.length <= 5 * 105
    -231 <= nums[i] <= 231 - 1

思路:

(1)映射一个关系为数组 a[i] 存的值为 i+1,所以当 a[i] = x时,x的下标就位 x-1

(2)0 -> a.length 循环,将 a[i] 放到 a[i] - 1 位置,如果a[a[i] - 1] != a[i] 就将两个数位置调整

(3)循环判断缺失了的数,如果a[i] != i + 1,缺失的数就是 i+1,循环完后还没有找到那就是返回a.length+1

class Solution {public int firstMissingPositive(int[] nums) {for (int i = 0; i < nums.length; i++) {while (nums[i] > 0 && nums[i] <= nums.length && nums[nums[i] - 1] != nums[i]) {//当 nums[i]大于零 且 nums[i]小于nums的长度 且 nums[nums[i - 1]]不等于nums[i] 的时候循环//nums[nums[i - 1]]和nums[i]进行交换int temp = nums[nums[i] - 1];nums[nums[i] - 1] = nums[i];nums[i] = temp;}}//判断缺失的数for (int i = 0; i < nums.length; i++) {if (nums[i] != i + 1) return i + 1;}return nums.length + 1;}
}


接雨水

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/trapping-rain-water
 

题目:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6


解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

 

示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

提示:

    n == height.length
    1 <= n <= 2 * 104
    0 <= height[i] <= 105

思路:

(1)需要先找到第一个大于0的柱子当做U型的左边

(2)左边固定下来后去找右边的柱子,右边的柱子有两种可能性

1)右边找到的第一个柱子>=左边的柱子

2)右边找到的第一个柱子<左边的柱子,但不能为0

(3)求出左边柱子与右边柱子中间的空隙,这里我使用了穷举的方法尝试所有的可能性

class Solution {public int trap(int[] height) {int ans = 0;//存放接水的数量int left = 0;//存放左边柱子的高度,默认为0for(int i = 0; i < height.length; i++) {if(height[i] >= 1) {//左侧的柱子必须大于等于一才可以接水left = i++;//左侧柱子高度等于iint now = 0;while(i < height.length && height[i] < height[left]) {//右边小于左边才可以存储now += height[left] - height[i++];//左边减去右边}if(i < height.length) {ans += now;i--;//for后会有i++,所以要--来抵消++,右边的柱子可以当做下一个U型的左侧柱子} else {//右边柱子都比左边的低i = left - 1;//回到左边的左边,i++抵消,重新回到leftheight[left]--;//每次减去1去匹配右边更低的柱子}}}return ans;}
}

0ms,100% 代码

class Solution {public int trap(int[] height) {int left = 0, right = height.length - 1;int maxL = height[left], maxR = height[right];int res = 0;while (left < right) {maxL = Math.max(maxL, height[left]);maxR = Math.max(maxR, height[right]);res += maxR > maxL ? maxL - height[left++] : maxR - height[right--];}return res;}
}

 

 

相关内容

热门资讯

开宝马320li丢人吗(开宝马... 本篇文章极速百科给大家谈谈开宝马320li丢人吗,以及开宝马320li有面子吗对应的知识点,希望对各...
名爵车怎么样(名爵车怎么样知乎... 今天给各位分享名爵车怎么样的知识,其中也会对名爵车怎么样知乎进行解释,如果能碰巧解决你现在面临的问题...
欧拉方程是什么(欧拉方程是什么... 本篇文章极速百科给大家谈谈欧拉方程是什么,以及欧拉方程是什么时候提出的对应的知识点,希望对各位有所帮...
苏州到南京火车(苏州到南京火车... 本篇文章极速百科给大家谈谈苏州到南京火车,以及苏州到南京火车票多少钱对应的知识点,希望对各位有所帮助...
广州好玩的地方排名榜(广州十大... 本篇文章极速百科给大家谈谈广州好玩的地方排名榜,以及广州十大好玩地方对应的知识点,希望对各位有所帮助...
电动车哪个牌子质量好(儿童电动... 今天给各位分享电动车哪个牌子质量好的知识,其中也会对儿童电动车哪个牌子质量好进行解释,如果能碰巧解决...
发现5价格(路虎神行发现5价格... 今天给各位分享发现5价格的知识,其中也会对路虎神行发现5价格进行解释,如果能碰巧解决你现在面临的问题...
获益匪浅的意思(获益匪浅的意思... 本篇文章极速百科给大家谈谈获益匪浅的意思,以及获益匪浅的意思和造句对应的知识点,希望对各位有所帮助,...
汗颜什么意思(汗颜什么意思啊)... 今天给各位分享汗颜什么意思的知识,其中也会对汗颜什么意思啊进行解释,如果能碰巧解决你现在面临的问题,...
菲克jeep(菲克jeep报价... 今天给各位分享菲克jeep的知识,其中也会对菲克jeep报价进行解释,如果能碰巧解决你现在面临的问题...
单片机sfr是什么意思(单片机... 本篇文章极速百科给大家谈谈单片机sfr是什么意思,以及单片机中sfg是什么意思对应的知识点,希望对各...
海阔凭鱼跃天高任鸟飞是啥意思(... 本篇文章极速百科给大家谈谈海阔凭鱼跃天高任鸟飞是啥意思,以及海阔凭鱼跃天高任鸟飞是对联吗对应的知识点...
成渝高速实时路况(成渝高速实时... 今天给各位分享成渝高速实时路况的知识,其中也会对成渝高速实时路况实时查询进行解释,如果能碰巧解决你现...
mect是什么意思(scrm是... 今天给各位分享mect是什么意思的知识,其中也会对scrm是什么意思进行解释,如果能碰巧解决你现在面...
brabus什么牌子车(bra... 本篇文章极速百科给大家谈谈brabus什么牌子车,以及brabus什么牌子车价格对应的知识点,希望对...
身份证刚过期能坐高铁吗(身份证... 本篇文章极速百科给大家谈谈身份证刚过期能坐高铁吗,以及身份证刚刚过期可以坐高铁吗对应的知识点,希望对...
少数民族的风俗(歌棚是哪个少数... 本篇文章极速百科给大家谈谈少数民族的风俗,以及歌棚是哪个少数民族的风俗对应的知识点,希望对各位有所帮...
三去一降一补是指什么(三去一降... 本篇文章极速百科给大家谈谈三去一降一补是指什么,以及三去一降一补是指什么降成本补短板对应的知识点,希...
驾照年检(驾照年检过期了怎么办... 本篇文章极速百科给大家谈谈驾照年检,以及驾照年检过期了怎么办对应的知识点,希望对各位有所帮助,不要忘...
b2驾照多少钱(深圳考b2驾照... 今天给各位分享b2驾照多少钱的知识,其中也会对深圳考b2驾照多少钱进行解释,如果能碰巧解决你现在面临...
汇源果汁有哪些产品(汇源果汁良... 本篇文章极速百科给大家谈谈汇源果汁有哪些产品,以及汇源果汁良心吗对应的知识点,希望对各位有所帮助,不...
买北汽威旺s50会后悔吗(北汽... 本篇文章极速百科给大家谈谈买北汽威旺s50会后悔吗,以及北汽威旺s50新车多少钱对应的知识点,希望对...
平顶山交警网(平顶山交警网官方... 本篇文章极速百科给大家谈谈平顶山交警网,以及平顶山交警网官方网站限号对应的知识点,希望对各位有所帮助...
汽车仪表盘报wrsherflu... 今天给各位分享汽车仪表盘报wrsherfluid的知识,其中也会对汽车仪表盘报警图标大全进行解释,如...
盐城火车站(盐城火车站时刻表查... 今天给各位分享盐城火车站的知识,其中也会对盐城火车站时刻表查询进行解释,如果能碰巧解决你现在面临的问...
小车几年报废(小车几年报废强制... 今天给各位分享小车几年报废的知识,其中也会对小车几年报废强制报废进行解释,如果能碰巧解决你现在面临的...
卡罗拉汽车之家(卡罗拉汽车之家... 今天给各位分享卡罗拉汽车之家的知识,其中也会对卡罗拉汽车之家报价及图片进行解释,如果能碰巧解决你现在...
k2186火车经过的站点(k2... 今天给各位分享k2186火车经过的站点的知识,其中也会对k2186火车经过的站点最新进行解释,如果能...
什么叫显示器(什么叫显示器梅花... 本篇文章极速百科给大家谈谈什么叫显示器,以及什么叫显示器梅花纹屏幕对应的知识点,希望对各位有所帮助,...
合肥到乌鲁木齐(合肥到乌鲁木齐... 今天给各位分享合肥到乌鲁木齐的知识,其中也会对合肥到乌鲁木齐多少公里进行解释,如果能碰巧解决你现在面...