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

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

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-06-25 09:04:35
沉默一个多月后,北航博导杨昀公开发声:网络传言均不属实!

沉默一个多月后,北航博导杨昀公开发声:网络传言均不属实!

天马幸福的人生
2026-06-26 13:02:08
韩红私人捐赠8000万!基金会投放超20亿,网友:黑子捐过一毛钱吗

韩红私人捐赠8000万!基金会投放超20亿,网友:黑子捐过一毛钱吗

火山詩话
2026-06-26 11:55:54
F组三队晋级,日本第二踢巴西,瑞典第三也晋级,韩国要疯了

F组三队晋级,日本第二踢巴西,瑞典第三也晋级,韩国要疯了

锐评利物浦
2026-06-26 10:45:57
7年败光2个亿,邹市明冉莹颖共同发文,终究还是踏出了这一步

7年败光2个亿,邹市明冉莹颖共同发文,终究还是踏出了这一步

林轻吟
2026-02-11 11:29:40
国泰航空向吴尊致歉:由于中转地衔接转运问题,行李未能及时装载,已追踪到该行李;此前吴尊发文怒斥国泰:行李丢失,苦等三天无回应

国泰航空向吴尊致歉:由于中转地衔接转运问题,行李未能及时装载,已追踪到该行李;此前吴尊发文怒斥国泰:行李丢失,苦等三天无回应

极目新闻
2026-06-26 08:40:41
特斯拉推出终身免费超充竞赛 全球仅9名用户可获得

特斯拉推出终身免费超充竞赛 全球仅9名用户可获得

CNMO科技
2026-06-26 13:35:33
谁会为68元/月的豆包买单?|深度

谁会为68元/月的豆包买单?|深度

国际金融报
2026-06-26 08:43:38
冯导的荒诞美学,把自己给整荒诞了

冯导的荒诞美学,把自己给整荒诞了

二湘空间
2026-06-26 09:00:29
特斯拉中国为员工子女设奖学金:考上985、211最高奖5000元

特斯拉中国为员工子女设奖学金:考上985、211最高奖5000元

IT之家
2026-06-26 11:53:40
6月26日,2026年基本养老金调整通知公布了吗?涨幅会大幅降低吗

6月26日,2026年基本养老金调整通知公布了吗?涨幅会大幅降低吗

社保小达人
2026-06-26 11:11:57
700万考生仅1人数学满分,提前保送清华,为何能引爆全网?

700万考生仅1人数学满分,提前保送清华,为何能引爆全网?

娱乐的宅急便
2026-06-26 03:49:07
广东一女子发现奶奶微信里有77万条未读消息 根本删不完

广东一女子发现奶奶微信里有77万条未读消息 根本删不完

21世纪经济报道
2026-06-26 11:46:40
惠州市惠城区财政局副局长杨世祥主动投案接受监察调查

惠州市惠城区财政局副局长杨世祥主动投案接受监察调查

21世纪经济报道
2026-06-26 11:46:03
A股:今天早盘加速跳水破4075,种种迹象表明,A股牛市已经开始熄火?

A股:今天早盘加速跳水破4075,种种迹象表明,A股牛市已经开始熄火?

股侠指北针
2026-06-26 10:05:14
湖人连签3人!小约基奇来了!詹姆斯真没戏啦?

湖人连签3人!小约基奇来了!詹姆斯真没戏啦?

柚子说球
2026-06-26 12:38:01
审计署抽查60县,平均每个县翻出10个亿问题资金

审计署抽查60县,平均每个县翻出10个亿问题资金

南方都市报
2026-06-25 12:17:33
卖掉开8年的燃油车,花35万买了一辆理想L8,开了6个月,终于明白

卖掉开8年的燃油车,花35万买了一辆理想L8,开了6个月,终于明白

大船同学
2026-06-19 16:23:07
绿洲珠宝行血案,浙江6任厅长追凶22年,抓到嫌犯后大家都愣住了

绿洲珠宝行血案,浙江6任厅长追凶22年,抓到嫌犯后大家都愣住了

崖边行
2025-06-27 21:11:22
全新丰田凯美瑞曝光,外观更漂亮,内饰更好看,提供混动和燃油版

全新丰田凯美瑞曝光,外观更漂亮,内饰更好看,提供混动和燃油版

红涛说車
2026-06-26 10:15:34
2026-06-26 14:27:00
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
273文章数 4关注度
往期回顾 全部

科技要闻

美国政府要求OpenAI分批发布GPT-5.6

头条要闻

13岁男孩失踪5天救援人员失去信心 妈妈坚持下找到了

头条要闻

13岁男孩失踪5天救援人员失去信心 妈妈坚持下找到了

体育要闻

奥尔莫:是时候为西班牙争夺第二颗星了

娱乐要闻

刘嘉玲想放弃梁朝伟,没有自理能力

财经要闻

悬在科技头上的达摩克利斯之剑

汽车要闻

老板们的新座驾!65万元起,尊界V800/V680开启预订

态度原创

本地
教育
亲子
旅游
艺术

本地新闻

2026世界杯全勤太难?这份保姆级攻略请收好

教育要闻

中国科学技术大学扩招,2026年安徽招生计划212名,今年多少分可以上科大?官方解答来了,速看(编辑...

亲子要闻

优奈两天没见阿姨,彼此想的不得了!一见面开心坏了

旅游要闻

周末去景山!观德殿看水墨御猫,国风文创同步开售

艺术要闻

“史上最热夏天”?

无障碍浏览 进入关怀版