被裁员后拿了 80000补偿金,交接完就离开了公司,结果新同事误删了资料,老总要这位同事回来交接,否则全行业抹黑他。
刚看到个贴子,说有网友被裁员拿了8万补偿,交接完就潇洒走人,结果新来的同事把资料误删了,老板竟然让他回来补救,不然就全行业“抹黑”他。😅
我觉得这事吧,说白了,程序员在职场最怕的就是这种“锅从天降”。资料出问题不是前同事的锅,公司流程不健全,还能赖到人头上?网友们一边倒觉得老板太离谱,我也认同——都交接完了,怎么还能甩锅回来呢?这就好比你搬家交了钥匙,结果下任租客把房子弄塌了,还要你回去修。
说到底,程序员的价值就在于“把事做对”,流程规范是最基本的。遇到这种事,不背锅才是正道。总的来说,干活要留证据,该走就走,谁还没点自己的底线?【备注:文末可领最新资料】
面试题:柱状图中最大的矩形离
你们有没有那种体验?白天脑子转不过来,结果洗完澡,脚刚碰枕头上,脑袋突然亮了,灵感贼多。那天就是这种感觉,怎么说呢,这题其实说白了就是给你一堆柱子,让你找一块最大的矩形区域,这块矩形必须是被柱子围起来的,宽度你随便连着挑,高度就取最矮那根。
题目大概意思
这玩意儿,其实有点像小时候玩叠积木,给你一个数组,每个数字就是柱子的高度。让你找一块连着的、矩形面积最大的区域,比如[2,1,5,6,2,3],最大的就是5和6那个,连成一个高度5、宽2的矩形,就是10。
暴力做法,真的是...劝你别试
我第一次做还真是傻傻地两重循环,然后内部再嵌一层,O(n^3),人直接卡死。写出来一跑,数组长点,机器直接风扇嗡嗡响。你们要是面试真敢这么写,面试官可能心疼他那台破电脑。
单调栈,真的YYDS
我后面才知道,正解其实就是用单调栈。什么是单调栈?其实也不难理解,就是保证栈里高度是递增的,遇到矮的,说明前面那些已经没法再延伸下去了,就该结算面积了。
我举个简单的例子,你想象下公司楼下那几个卖水果摊子,每个摊子的棚子高度不一样,你要拉一块布横着盖过去,能盖的最宽那一块,肯定是中间那些最矮的摊子决定的。
在代码里,就是遍历每个高度,遇到比当前小的,就把前面的弹出来,算一下面积:宽度就是当前位置减去前一个弹出的下标,乘上被弹出那个高度。
上点代码,真不是装x,就是这样
deflargestRectangleArea(heights):
stack = []
max_area = 0
heights.append(0) # 最后塞个0,方便全部清算
for i, h in enumerate(heights):
while stack and heights[stack[-1]] > h:
height = heights[stack.pop()]
left = stack[-1] if stack else-1
width = i - left - 1
max_area = max(max_area, height * width)
stack.append(i)
return max_area
我前天还给小李发了这段,结果他直接copy paste用在工作里,一个监控页面加载贼快。你们平时开发如果有可视化的需求,比如做那种柱状图,别死磕D3或Echarts的数据预处理,先写这种栈解法,体验好不少。
思路别死记,面试时候多解释人话
我那会儿面试,碰到这种题,真的千万别跟面试官死扣代码,先画个图,比划两下。像我,上次面京东,技术官还没等我写完,直接让我走人了,回头还加了我微信,说是我思路清楚(大晚上才回我消息,也是醉了)。
小细节,容易出锅的地方
还有一个小坑,就是数组最后一定要加个0,不然栈可能还没清空你就循环完了,那你最大面积就漏算了。还有就是width那个计算,栈为空时要减-1,这个坑我当年踩了一个小时。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领