Algorithm

主要是为了编程训练和学习。每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard)。进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。关于做Leetcode的的优势,你可以看一下我在coolshell上的文章 Leetcode 编程训练 - 酷 壳 - CoolShell

搜索旋转排序数组: https://leetcode.cn/problems/search-in-rotated-sorted-array/
做题感受:

  • 一开始能联想到“快速排序”,但是思路还不明确
  • 最重要的是通过缩小查找空间
  • 发现把“整个数组是增序”的判断去掉后,代码也能正常-_-||
  • 在细节上调试了很长时间,在“确定搜索空间”处卡住了: ```javascript // 最关键的判断 if (nums[mid] > target && target > nums[i]) { i++; j = mid - 1; } else { i = mid + 1; j—; }

// 最关键的判断 if (nums[j] > target && nums[mid] < target) { i = mid + 1; j—; } else { i++; j = mid - 1; } ```

Review

主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。所以,需要你阅读并点评至少一篇英文技术文章,我个人最喜欢去的地方是http://Medium.com(需要梯子)以及各个公司的技术blog,如Netflix的。

// TODO

Tip

主要是为了总结和归纳你在是常工作中所遇到的知识点。学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。

// TODO

Share

主要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的技术文章。

// TODO