本次做的题目是 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% 。
本周读了 Medium 上的一篇文章:Mistakes I’ve made as a junior developer — and how you can avoid them。
作者简要介绍了自己在最开始做软件开发的两年中犯下的错误,并为避免问题提供了建议。
作者从选择工作、工作和工作之外进行了分享,简要总结如下:
作者强调在找工作前,要进行充分的调查。
- 了解自己的能力处在什么段位,市场对该段位的薪资范围是多少,这样可以避免自己的薪水不至于太低于自己的实际水平
- 了解公司的情况。在入职前可以去各种求职网站、社区等了解心仪公司的业务情况、市场排名、工作制度等,避免盲目进入后发现不合适、不适应而后悔
- 了解要工作公司的技术栈。比如使用何种版本管理工具、何种框架,如何发布等
通过了解上述内容,可以帮助自己选择较为适合自己的公司和团队,不至于盲目的进入一家毫不知情的公司。
- 写注释!虽然我们经常说道代码是最好的注释,但是大部分逻辑有点复杂的代码只有加上注释才会更好的让人理解
- 尽早提问。在遇到不明白的问题或者需求并且迟迟找不到思路时要及时的提问,不要自己浪费时间
- 可以尝试在家办公,这样可以远离办公室中严肃的气氛和压力,更加的从容
- 明白工作不可能全部拿来编程,还需要开会,沟通,要自己协调好各种安排
- 发展额外技能,不要沉浸于一个环境太久而导致自己过于安逸,主动学习新的技能,尤其是为你的下一份职业生涯做准备的技能
- 阅读写作
- 锻炼休息
最近没有系统整理实战技巧性的东西,本次 Tip 先略过吧。
分享一下本周整理的关于 ES 倒排索引存储过程 和 ES 分布式存储的博客: ES 准实时存储机制与文档的分布式存储过程, 欢迎拍砖。