Algorithm
本周选择的算法题是:transpose-matrix。
规则
Given a 2D integer array matrix
, return the transpose of matrix
.
The transpose of a matrix is the matrix flipped over its main diagonal, switching the matrix’s row and column indices.
Example 1:
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [[1,4,7],[2,5,8],[3,6,9]]
Example 2:
Input: matrix = [[1,2,3],[4,5,6]]
Output: [[1,4],[2,5],[3,6]]
Constraints:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 1000
1 <= m * n <= 105
-109 <= matrix[i][j] <= 109
Solution
class Solution:
def transpose(self, matrix: List[List[int]]) -> List[List[int]]:
m, n = len(matrix), len(matrix[-1])
ans = [[matrix[j][i] for j in range(m)] for i in range(n)]
return ans
Review
Why I Like Using UUIDs on Database Tables
作者建议在数据库中额外增加一列 UUID,代替自增 ID 作为对外参数,但作者只从数据安全角度描述了 UUID 的好处,忽略了 UUID 对业务安全有着同等重要的作用:因为数据随机,公开的数据完全没法用于衡量业务规模,比如竞争对手无法简单的通过数据衡量一天的订单量。
此外在微服务架构下,UUID 也有天然低管理成本的优势。
但 UUID 也不适用于所有场景:
- 完全无序,可读性差
- 长度太长,浪费空间
除了 UUID,snowflake 也是常见的算法,而且 snowflake 可以满足趋势递增的诉求。
Tip
学习到 OKR 集市的概念。
Share
人有三种动机:
- 外在动机
- 内在动机
- 动机匮乏
先从简单的动机匮乏和内在动机说起。
动机匮乏体现在对一件事,要么认为不值得做,要么认为不能做,从而对这件事无欲无求,这是最被动的状态。但不一定完全是个体的原因,比如说一个组织是以强绩效导向文化驱动的,面对其他部门的请求时,虽然他有能力完成这个请求,不过由于这样做本身并不会给他带来任何实质绩效好处,那么他也会很容易进入动机匮乏的状态。
有个扔石头的故事说的也是这个理:
从前有个老头儿,安静的居住在一个院落里,可总有一群附近的小孩来骚扰他。他们恶作剧的往老头儿的院子里扔石头,惹得老头儿发怒,然后一窝蜂的跑掉,第二天再来扔石头,乐此不疲。
过了很久,老头觉得再凶巴巴的发火也是没用,就另想了一个办法。有天一阵石子雨后,老头儿和颜悦色的出现在孩子们面前,说:“欢迎你们来玩,从今天起我会给每个扔石头的孩子10块钱。”小孩们一听都高兴极了:“干坏事还给钱?真是太好了!”第二天小孩们来到老头家又是一顿扔,然后每人又得到10块钱。
第四天就不一样了,孩子们扔完石头后每人只得到5块钱。又过了两天更少了,老头儿只给每个孩子2块钱,孩子们对待遇的降低都不满意,石子也不好好扔了。接下来老头儿更过分了,连屋都不出,一分钱不给。孩子们这叫气:我们这辛辛苦苦的扔石头,他还不给钱,不给他扔了!
内在动机则是建立在完全自主状态上,体现为做一件事,纯粹是因为这件事本身充满乐趣、有趣,而不是为了追求某个外部奖励或避免某个惩罚。大家之所以追求内在动机,除了因为事情本身可以做好外,还因为在这种状态下,个体的自主、胜任和关系三个基本的心理需求都得到了高度满足,从而让个体精力充沛、充满活力,保持身心健康。
动机匮乏和内在动机之所以简单,是因为它们处于两个极端:
- 从无自主决定到自主决定
- 从机械执行到自主探索
- 从无助感到内在满足
- 从生产线到自由职业
外在动机则处于中间地带,分为:外部调节、内投调节、认同调节和整合调节。
外部调节体现为做一件事完全是被外部奖励或者惩罚驱动,当驱动因素消失时,行为也就自动迅速消失,我们描述一种场景:A 要在企业做一件事,这件事需要有 B 的参与,A 和 B 私下沟通好了,并且得到了 B 的认可。很快,A 将交流的内容整理好后发给了他的主管 C,A 的这个动作并没有为工作增值,仅仅是为了获得主管 C 的认可才做的,这个动作就是受外部调节动机驱使的。如果更进一步,A 仅会在主管 C 在场的情况下才贡献自己的好想法,当他评估认为主管无法感知到自己的贡献时,就不会去做,这个行为已经泛化到做任何事情都是为了获得认可或回报,具备典型的外部调节导向。
外部调节的问题在于:处于此种动机驱使的人,只是把工作当作获取外部奖励或避免外部惩罚的手段,通常会非常焦虑,甚至抑郁,身心健康差,而且通常追求的是工作的数量而不是工作的质量。
内投调节相比外部调节,最大的变化在于规则本身已经被个体所内化,从而没有外部条件存在的情况下,也会去做一件事,是一种内部自我控制,通常觉得自己“应该”“必须”去做这件事,不做会产生内疚、负罪、有压力。就像外部调节一样,内投调节驱动的人也会很在意他人对某事的看法,并希望得到他人的认可。我们描述一种场景:A 所在的企业通常会加班,曾经很多次,A 加班到晚上 10 点终于把工作完成后准备回家,发现身旁的同事都还在,于是不好意思离开,只得陪加班。这种行为本身也不会给工作带来增值,也没有人强制一定要这么做,只是因为如果不这么做,会让自己觉得很内疚,这就是典型的内投调节导向。
认同调节相比内投调节,在自主性上又进了一步,体现为做一件事,不是迫于外部压力或自我压力才去做,而是因为认同这件事的价值及其重要性,它对自己而言很重要,是有意义的。我们描述一种场景:上级给下级安排一个工作,如果只是单纯把任务分配下去,而没有告诉他为什么要这样做,并且做了后能给组织和个人带来什么价值时,员工通常会在动机匮乏或者外部调节驱动下完成,但如果上级告诉他,完成这个工作后,会大大地提升客户满意度,同时给组织创造了一大笔营收,也会让他个人获得这一方面的成长,员工在认识到这个层面后,动机状态就会提升至认同调节。
认同调节虽然具备了一定的自主性,但通常没有和其他意愿做整合,比如认为某个工作很重要,于是长期加班到很晚才回家,另一方面,又觉得自己没有抽时间陪伴家人,于是感受到了强烈的冲突,这是典型的认同调节。
整合调节是所有外在动机中自主性最强的,体现为完全认同做一件事的价值和意义,也能将各种意愿整合到一起,会觉得工作和生活是一个整体,不存在需要平衡一说,同时善于从工作中追寻和发现意义。我们描述一种场景:A 公司还处于创业阶段,虽然总共才只有几位小伙伴,但他们有一个巨大的愿景,未来某个领域,三分天下必有其一,于是这批人没日没夜地努力钻研,牺牲了几乎所有的业余时间,这就是典型的整合调节导向 — 具有极大的自主性、认可工作的价值和意义、将奋斗认为是日后工作和生活的全部,愿意为之一搏。
我们最后从工作感官上做一个总结:
- 动机匮乏 - 躺平
- 外在动机
- 外部调节 - 因薪酬有竞争力
- 内投调节 - 工作是某种规则
- 认同调节 - 工作、生活需要平衡
- 整合调节 - 工作和生活是一个整体
- 内在动机 - 工作的报酬就是工作
当工作内容很枯燥简单、偏执行时,外在动机尚有其用武之地,但如果工作内容是复杂、偏创新时,唯有内在动机才能发挥出惊人的效果。