网易首页 > 网易号 > 正文 申请入驻

各互联网大厂月薪分布图。。。

0
分享至

专栏:50多种数据结构彻底征服

专栏:50多种经典图论算法全部掌握

最近在脉脉上看到一张图片,列举了互联网大厂薪资的分布情况,整体来看,多数企业员工薪资集中在 20 - 50K 的区间。其中贝壳在 30 - 50K 薪资段占比最高,为 72.1% ;区间50K以上的,字节和拼多多占比最多,都是5.4%,不过我觉得这种统计比较保守了,应该没有算上加班工资,否则只会更高。

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第42题:接雨水。

问题描述

来源:LeetCode第42题

难度:困难

给定 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 * 1^04

  • 0 <= height[i] <= 10^5

问题分析

关于接雨水问题我们前面都讲过,有兴趣的可以先看下:

这里再来讲一遍,不过今天的解决方式和之前的不一样,今天使用的是 单调栈 来解决。

如果要计算某个位置是否能接雨水,需要找到这个位置左边和右边有没有比他高的柱子,如果有,那么该位置肯定是能接的。所以我们可以使用一个单调栈,从 栈顶到栈底是单调递增的 。

遍历整个数组,如果数组中的某个元素比栈顶元素m大,说明栈顶元素m遇到了右边比他大的值,这个时候栈顶元素m出栈,出栈之后如果栈不为空,那么新的栈顶元素就是左边比他大的值,既然找到左边和右边都比他大的值,就可以计算位置m所能容纳的水了。

注意这里计算某个位置所容纳的水量不是最终的水量,如下图中,c 位置最终容纳的水是 2 ,但我们计算的时候 c 的左边和右边比他大的分别是 b 和 d ,他们的最小高度是 1 ,所以容纳的水也是 1 。

当计算 d 的时候,左右两边比他大(相等也可以)的是 b 和 e ,因为 d 和 b 的高度一样,所以计算容纳水量为 0 。计算 b 的时候,他的左右两边比他大的分别是 a 和 e ,宽度是 3 ,高度是 1 ,容纳的水量是 3 。

JAVA:

public int trap(int[] height) {     int water = 0;// 容纳的水量     // 单调栈,存放的是柱子的下标,从栈顶到栈底是递增的。     Stack
         
         
  stk =  new Stack<>();      for ( int i =  0; i < height.length; i++) {          // 如果栈不为空,并且当前元素比栈顶元素大          while (!stk.isEmpty() && height[i] > height[stk.peek()]) {              int index = stk.pop(); // 栈顶元素出栈。              // 因为栈从顶到底是递增的,此时如果栈不为空,说明在数组中index左边还有比他高的柱子。              if (!stk.isEmpty()) {                  int left = stk.peek(); // 左边界                  int w = i - left -  1; // 宽度                  int h = Math.min(height[left], height[i]) - height[index];                 water += w * h; // 存数量累加             }         }         stk.push(i);     }      return water; }

C++:

public:     int trap(vector

  &height) {         int water = 0;// 容纳的水量         // 单调栈,存放的是柱子的下标,从栈顶到栈底是递增的。         stack

  stk;         for (int i = 0; i < height.size(); i++) {             // 如果栈不为空,并且当前元素比栈顶元素大             while (!stk.empty() && height[i] > height[stk.top()]) {                 int index = stk.top();                 stk.pop();// 栈顶元素出栈。                 // 因为栈从顶到底是递增的,此时如果栈不为空,说明在数组中index左边还有比他高的柱子。                 if (!stk.empty()) {                     int left = stk.top();// 左边界                     int w = i - left - 1;// 宽度                     int h = min(height[left], height[i]) - height[index];                     water += w * h;// 存数量累加                 }             }             stk.push(i);         }         return water;     }


C:

#define min(a, b) (((a) < (b)) ? (a) : (b)) int trap(int *height, int heightSize) {     int water = 0;// 容纳的水量     // 单调栈,存放的是柱子的下标,从栈顶到栈底是递增的。     int *stk = malloc(20000 * sizeof(int));     int top = 0;// 栈顶     for (int i = 0; i < heightSize; i++) {         // 如果栈不为空,并且当前元素比栈顶元素大         while (top != 0 && height[i] > height[stk[top - 1]]) {             int index = stk[--top];// 栈顶元素出栈。             // 因为栈从顶到底是递增的,此时如果栈不为空,说明在数组中index左边还有比他高的柱子。             if (top != 0) {                 int left = stk[top - 1];// 左边界                 int w = i - left - 1;// 宽度                 int h = min(height[left], height[i]) - height[index];                 water += w * h;// 存数量累加             }         }         stk[top++] = i;     }     return water; }

Python:

def trap(self, height: List[int]) -> int:     water = 0  # 容纳的水量     # 单调栈,存放的是柱子的下标,从栈顶到栈底是递增的。     stk = []     for i, num in enumerate(height):         # 如果栈不为空,并且当前元素比栈顶元素大         while stk and num > height[stk[-1]]:             index = stk.pop()  # 栈顶元素出栈。             # 因为栈从顶到底是递增的,此时如果栈不为空,说明在数组中index左边还有比他高的柱子。             if stk:                 left = stk[-1]  # 左边界                 w = i - left - 1  # 宽度                 h = min(height[left], num) - height[index]                 water += w * h  # 存数量累加         stk.append(i)     return water

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以 下载我整理的1000多页的PDF算法文档 。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
毁三伤二!伊朗突袭科威特基地,五架“台风”战机遭重创

毁三伤二!伊朗突袭科威特基地,五架“台风”战机遭重创

武器纵论
2026-03-21 15:47:05
4S店卖一辆亏一辆?杭州经销商:一辆官方指导价12.59万元的车,成交价已击穿8.4万元

4S店卖一辆亏一辆?杭州经销商:一辆官方指导价12.59万元的车,成交价已击穿8.4万元

都市快报橙柿互动
2026-03-20 19:36:04
癌症去世的人越来越多?协和再次提醒:宁可打打牌,也别做这5事

癌症去世的人越来越多?协和再次提醒:宁可打打牌,也别做这5事

鬼菜生活
2026-03-21 19:20:12
3次降温!5次降水!江苏最新预测

3次降温!5次降水!江苏最新预测

无锡eTV全媒体
2026-03-22 03:16:30
1-1!意甲争四大冷:尤文不胜+无缘进前4,米兰差国米5分有望逆袭

1-1!意甲争四大冷:尤文不胜+无缘进前4,米兰差国米5分有望逆袭

体育知多少
2026-03-22 06:16:21
有没有人敢爆自己的瓜?网友:确定玩这么大吗?

有没有人敢爆自己的瓜?网友:确定玩这么大吗?

夜深爱杂谈
2026-02-18 20:55:58
北京这夜:章子怡脸肿撞脸倪萍,刘浩存好土 周冬雨靠几百裙子出

北京这夜:章子怡脸肿撞脸倪萍,刘浩存好土 周冬雨靠几百裙子出

卷史
2026-03-21 19:54:29
不知大家发现没!超奇怪的用车现象:电车跑1000公里电费仅100元

不知大家发现没!超奇怪的用车现象:电车跑1000公里电费仅100元

阿芒娱乐说
2026-03-20 04:13:07
“梅姨”现身并落网!对贩卖儿童事实供认不讳,已被依法逮捕

“梅姨”现身并落网!对贩卖儿童事实供认不讳,已被依法逮捕

南方都市报
2026-03-21 11:35:00
普通人接触富人的生活有多震撼?网友:吸引力法则让我刷到你!

普通人接触富人的生活有多震撼?网友:吸引力法则让我刷到你!

解读热点事件
2026-03-22 00:05:09
《好好的时光》收官,3人零差评1人翻红,她全程龇牙咧嘴差评一片

《好好的时光》收官,3人零差评1人翻红,她全程龇牙咧嘴差评一片

洲洲影视娱评
2026-03-21 14:20:20
近期贾玲去参加了自己恩师冯巩的生日聚会,你们看看还有谁缺席了

近期贾玲去参加了自己恩师冯巩的生日聚会,你们看看还有谁缺席了

草莓解说体育
2026-03-22 05:58:56
“80后”、九三学社社员,任高校“掌门”

“80后”、九三学社社员,任高校“掌门”

双一流高校
2026-03-22 00:12:02
破纪录在即,拜仁距德甲历史单赛季进球纪录只差4球

破纪录在即,拜仁距德甲历史单赛季进球纪录只差4球

懂球帝
2026-03-22 01:19:20
中国精准反制巴拿马!放弃180亿换5亿?两大航运巨头做两难抉择!

中国精准反制巴拿马!放弃180亿换5亿?两大航运巨头做两难抉择!

归史
2026-03-22 05:04:20
战争第20天,终于打出了让全世界屏住呼吸的一幕!

战争第20天,终于打出了让全世界屏住呼吸的一幕!

浪子的烟火人间
2026-03-21 17:15:59
女子赴发小婚礼穿瑜伽裤,打扮过于火辣,网友直呼跟没穿似的

女子赴发小婚礼穿瑜伽裤,打扮过于火辣,网友直呼跟没穿似的

一盅情怀
2026-03-16 17:28:45
35岁上海男子心脏骤停离世!“降糖偏方”竟成催命符

35岁上海男子心脏骤停离世!“降糖偏方”竟成催命符

不甜的李子
2026-03-22 04:15:36
2024年叶诚尘被注射死刑,警方恢复大量聊天内容,发现她有一怪癖

2024年叶诚尘被注射死刑,警方恢复大量聊天内容,发现她有一怪癖

瞻史
2026-03-19 21:06:35
陈云晚年首次披露:遵义会议上这两个人死活不同意毛主席,吵得面红耳赤

陈云晚年首次披露:遵义会议上这两个人死活不同意毛主席,吵得面红耳赤

老杉说历史
2026-03-21 17:38:44
2026-03-22 08:39:00
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
271文章数 4关注度
往期回顾 全部

科技要闻

库克在华这四天,一场既定的市场秀

头条要闻

男子在壶口瀑布外拍视频喊"门口要钱"被投诉 景区回应

头条要闻

男子在壶口瀑布外拍视频喊"门口要钱"被投诉 景区回应

体育要闻

谁在决定字母哥未来?

娱乐要闻

田栩宁终于凉了?出轨风波影响恶劣

财经要闻

通胀警报拉响,加息潮要来了?

汽车要闻

小鹏汽车2025年Q4盈利净赚3.8亿 全年营收767亿

态度原创

时尚
亲子
房产
数码
公开课

这些才是适合普通人借鉴的穿搭!衣服叠穿、多穿衬衫,好耐看

亲子要闻

“锌”是聪明根!春天孩子多吃高锌菜,脑子灵、记性好、个头猛长

房产要闻

全城狂送1000杯咖啡!网易房产【早C计划】,即刻启动!

数码要闻

触控屏+更好看+更强悍,坐等今年新MacBook Pro

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版