你背不下来的书,总有人能背下来;你做不出来的题,总有人能做出来;你愿意拖到明天的事,总有人今天努力做完;那么不好意思,你想去的学校也只能别人去了,你想过的人生也只能别人过了。


路虽然很漫长,很孤单,但是只要你走出一步,你离目的地就近一步,千万不能停在原地叹息,否则永远都无法到达目的地。

Algorithm

没有哪个大牛对数据结构和算法是不熟练的。LeetCode 算法题,至少一题

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"
链接:https://leetcode-cn.com/problems/zigzag-conversion/

思路:这里就是将一个字符串打印出 N 的形状,可以找出其中的规律来,这里它的行号始终都是1-N,N-1这样反复的过程

  1. public class ZigzagConversion {
  2. public static void main(String[] args) {
  3. String s = "1234567";
  4. int row = 4;
  5. System.out.println(new ZigzagConversion().convert(s, row));
  6. }
  7. /**
  8. * 找关系,行数的变化,分别是1234,4321,1234,...这样有规律的
  9. * @param s
  10. * @param numRows
  11. * @return
  12. */
  13. public String convert(String s, int numRows) {
  14. if(numRows < 2) {
  15. return s;
  16. }
  17. List<StringBuilder> rows = new ArrayList<StringBuilder>();
  18. for(int i = 0; i < numRows; i++) {
  19. rows.add(new StringBuilder());
  20. }
  21. int flag = -1,i = 0,idx = 0;
  22. while (i < s.length()) {
  23. rows.get(idx).append(s.charAt(i));
  24. // 这两种情况要变化,也就是1-4,4-1,1-4,...,反复这样的过程
  25. if (idx == 0 || idx == numRows -1) {
  26. flag = - flag;
  27. }
  28. idx += flag;
  29. i ++;
  30. }
  31. StringBuilder sb = new StringBuilder();
  32. for (StringBuilder row : rows) {
  33. sb.append(row);
  34. }
  35. return sb.toString();
  36. }
  37. }


Review

流畅的阅读英文技术资料是一个大牛必备的。英文学习,以技术翻译为主

翻译

Tip

保持好奇,保持学习。至少一个技巧,以技术技巧为主

这周看了 Ant Design 教程,有理有据,优秀的前端设计规范,值得借鉴学习。

Share

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

入职新公司的一周感悟

image.png

当然,外包的工作可能都是很简单的,有可能没有什么挑战难度的,所以一定要有这个心理准备,有更好的选择肯定是不建议外包。