写点什么

ARTS 打卡计划 _ 第一周

发布于: 2020 年 05 月 31 日

Algorithm(LeetCode 算法题练习和学习)

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。


/*** 这道题一开始我觉得非常容易,只要实现在尾数加1即可。* 在碰到了进位问题之后,一时半会也没有什么好的方法。* 因为我一开始的所有思路都是从头开始遍历到最后一个元素然后进行加一。* 在参考了答案之后才发现,有的问题逆向去分析会简单很多。* 碰到位数增加就直接申请一个新的数组,第一个元素置为1即可。**/class Solution {    public int[] plusOne(int[] digits) {        int len = digits.length;        if (len == 0 || digits == null) {            return new int[0];        }        for (int i = len - 1; i >= 0; i--) {            digits[i]++;            digits[i] %= 10;            if (digits[i] != 0) {                return digits;            }        }        digits = new int[len+1];        digits[0] = 1;        return digits;    }}
复制代码


Review(英文技术文章点评)

https://blog.pragmaticengineer.com/the-product-minded-engineer/?utm_source=wanqu.co&utm_campaign=Wanqu+Daily&utm_medium=website

The Product-Minded Software Engineer 这篇文章来自极客时间的新专栏《互联网人的英语私教课》,主要是介绍了产品经理需要怎样的特质。

产品经理需要向工程师准确地传达公司的战略意图、产品的核心价值、设计背后的需求逻辑等,工程师则需要具备所谓的“技术思维”或“工程思维”,从技术实现的角度去考虑系统架构、开发成本等问题。一个优秀的产品经理除了懂客户、懂商业,还需要懂技术,在和工程师互动的过程中,要不断深入了解“工程思维”,并将“产品思维”或者“用户思维”与“工程思维”结合起来,这往往是很多公司招聘产品经理的基本条件之一。


Tip(总结和归纳本周学习的知识点)

关于 HashMap 的一些总结

HashMap 的实现原理

HashMap 的主干是一个 Entry 数组。Entry 是 HashMap 的基本组成单元,没一个 Entry 包含一个 key-value 键值对,Map 其实就是保存了两个对象之间的映射关系的一种集合。HashMap 由数组+链表组成,数组是 HashMap 的主体,链表是为了解决哈希冲突而存在的,如果定位到数组位置不含链表,那么查找、添加等操作很快,仅需要一次寻址即可。如果定位到的数组包含链表,对于添加操作其时间复杂度为 O(n),因为要先遍历链表,存在则覆盖,否则新增;对于查找操作来讲,仍需遍历链表,然后通过 key 对象的 equals 方法逐一比对查找。所以,从性能考虑 HashMap 中的链表越少,性能才会越好。


Hash Table 的复杂度分析(平均情况)

插入、查询和删除都是 O(1)的时间复杂度。


HashMap 的 put()与 get()

put 之前,先计算 key 的 hashCode,hashCode 是个 int 类型的值,计算出来的 hashCode 就是数据在这个数组中的索引。所以,在 get 的时候,也是先计算 key 的 hashCode,然后通过 hashCode 直接从数组中取出值即可。如果存在不同 key 的 hashCode 相同,那么这些 hashCode 相同的值就被存放在一个链表上,查找的时候就遍历这个链表,这就会造成性能下降,所以需要设计一个好的散列函数。


Share(分享一篇有价值的文章)

https://www.youtube.com/watch?v=Hd_ptbiPoXM

乔布斯在斯坦福大学毕业典礼演讲。虽然不是文章,但我个人觉得非常值得分享。Stay hungry, stay foolish.


用户头像

还未添加个人签名 2018.11.14 加入

还未添加个人简介

评论

发布
暂无评论
ARTS打卡计划_第一周