Skip to content

Latest commit

 

History

History
74 lines (49 loc) · 3.22 KB

2018-11-11.md

File metadata and controls

74 lines (49 loc) · 3.22 KB

一. Algorithm

本次做的题目是 283. Move Zeroes

题目要求如下:

  • 将数组中的 0 移动数组最后面
  • 不改变非 0 值的排序属性女
  • 不允许占用新的空间

一道 Easy 难度的题目,基本思路就是先遍历到所有的非 0 值然后将其赋值到数组的前面,记录其索引,遍历完成后将索引后面的数组值全部设为 0。代码实现如下:

class Solution {
    public void moveZeroes(int[] nums) {
        int len = nums.length;
        int index = 0;
        for (int i = 0; i < len; i ++) {
            int num = nums[i];
            if (num != 0) {
                 nums[index ++] = num;
            }
        }
        
        for (int i = index; i < len; i ++) {
            nums[i] = 0;
        }
    }
}

需要遍历整个数组并判断是否为0,时间复杂度为 O(N)。执行情况: 1 ms, faster than 100.00% 。

二. Review

本周读了 Medium 上的一篇文章:Mistakes I’ve made as a junior developer — and how you can avoid them

作者简要介绍了自己在最开始做软件开发的两年中犯下的错误,并为避免问题提供了建议。

作者从选择工作、工作和工作之外进行了分享,简要总结如下:

1. 了解自己的价值所在

作者强调在找工作前,要进行充分的调查。

  • 了解自己的能力处在什么段位,市场对该段位的薪资范围是多少,这样可以避免自己的薪水不至于太低于自己的实际水平
  • 了解公司的情况。在入职前可以去各种求职网站、社区等了解心仪公司的业务情况、市场排名、工作制度等,避免盲目进入后发现不合适、不适应而后悔
  • 了解要工作公司的技术栈。比如使用何种版本管理工具、何种框架,如何发布等

通过了解上述内容,可以帮助自己选择较为适合自己的公司和团队,不至于盲目的进入一家毫不知情的公司。

2. 工作之中

  • 写注释!虽然我们经常说道代码是最好的注释,但是大部分逻辑有点复杂的代码只有加上注释才会更好的让人理解
  • 尽早提问。在遇到不明白的问题或者需求并且迟迟找不到思路时要及时的提问,不要自己浪费时间
  • 可以尝试在家办公,这样可以远离办公室中严肃的气氛和压力,更加的从容
  • 明白工作不可能全部拿来编程,还需要开会,沟通,要自己协调好各种安排

3. 工作之外

  • 发展额外技能,不要沉浸于一个环境太久而导致自己过于安逸,主动学习新的技能,尤其是为你的下一份职业生涯做准备的技能
  • 阅读写作
  • 锻炼休息

三. Tip

最近没有系统整理实战技巧性的东西,本次 Tip 先略过吧。

四. Share

分享一下本周整理的关于 ES 倒排索引存储过程 和 ES 分布式存储的博客: ES 准实时存储机制与文档的分布式存储过程, 欢迎拍砖。