写点什么

ARTS-Week-1

用户头像
绝影
关注
发布于: 2021 年 03 月 26 日
ARTS-Week-1

1 Algorithm

反转数组-7-简单:

https://leetcode-cn.com/problems/reverse-integer/


描述:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。


如果反转后整数超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] ,就返回 0。


假设环境不允许存储 64 位整数(有符号或无符号)。


提示:-2^31 <= x <= 2^31 - 1


示例 1:

输入:x = 123

输出:321


示例 2:

输入:x = -123

输出:-321


示例 3:

输入:x = 120

输出:21


示例 4:

输入:x = 0

输出:0

思路:

逆序输出

  1. 记录输入整数的符号

  2. 将整数转换为字符串

  3. 对字符串做逆序遍历,得到新的字符串

  4. 将字符串转换为整数(越界判断)

首尾交换

  1. 记录输入整数的符号

  2. 将整数转换为字符串

  3. 将字符串转换为字符数组

  4. 对字符数组做首尾交换,得到新的字符数组

  5. 将字符数组转换为字符串

  6. 将字符串转换为整数(越界判断)

数学思维

  1. 将整数对 10 做取余,得到最后一位

  2. 将整数对 10 做取模,得到新的整数

  3. 重算①②的操作

实现:

public int reverse(int x) {    //1 边界判断:    // 整数最小值:-2147483648,    // 整数最大值: 2147483647    if (x == Integer.MIN_VALUE || x == Integer.MAX_VALUE) {        return 0;    }    //2 符号判断    int sign = x > 0 ? 1 : -1;    x = x < 0 ? -x : x;    //3 数学操作:取模取余    int result = 0;    int last = 0;    while ((last = x % 10) != x) {        result = result * 10 + last;        x /= 10;    }    //4 最后一位处理    if (last != 0) {        if (result > Integer.MAX_VALUE / 10 ||            (result == Integer.MAX_VALUE / 10 && last > Integer.MAX_VALUE % 10)) {            return 0;        }        result = result * 10 + last;    }    //5 返回结果    return result * sign;}
复制代码

反思:

如果输入参数为数字,就思考能否使用数学思维来解答。

如果可以,数学思维往往是最佳的方式。


2 Review

具有产品思维的工程师:https://blog.pragmaticengineer.com/the-product-minded-engineer/


站在产品的角度看需求,用户真正的痛点是什么,是不是一定要做这个需求。

站在产品的角度看问题,用户为什么觉得这是一个问题,用户期望的结果是什么。

站在产品的角度做沟通,不通过专业术语,只用一些大家都知道的业务名词完成沟通。


3 Tips

聊聊内存:

  1. Kubernetes 中,容器被系统杀掉,只有一种情况,就是容器中的进程使用了太多的内存。

  2. Redis 进行 AOF 重写的时,如果写请求是 bigkey,就会申请更大的内存,这次写会阻塞主进程。

  3. Linux 中,进程可以申请超过实际可以用的内存,但是不能使用超过实际可以用的内存。

  4. Kafka 吞吐量高的一个原因是,消费者读取的消息不经过磁盘 IO,直接从 PageCache 中读取。

  5. MySQL 为了提升写的性能,即写操作不经过磁盘 IO,引入了 Change Buffer 机制。


4 Share

写方案的套路:

  1. 为什么。这个方案解决了用户什么痛点。

  2. 做什么。通过哪些方式,路径,可以解决用户需求。

  3. 怎么做。针对每一种方式,具体要做什么。

  4. 下一步。这个方案落地后,下一步计划是什么。

用户头像

绝影

关注

终身学习,自我更新,自我迭代。 2018.04.29 加入

还未添加个人简介

评论

发布
暂无评论
ARTS-Week-1