zoukankan      html  css  js  c++  java
  • 每周学算法/读英文/知识点心得分享 2.4

     每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西!

    Algorithm: 学习算法

    题目:https://leetcode.com/problems/zigzag-conversion/

    解题过程:

    刚开始没看懂什么意思,看了两遍,明白是把字符串从上至下按照锯齿形排列,然后按行输出。 根据题目提示可以继续做一下延伸,把1-20 按 n=5 自己排列一下。

    这种题一般有规律,找出要打印的字符在字符串里的下标,收集在一起就是结果了。

    规律就是,同一行中 不同纵列里的数字间隔是2*n - 2(以n=5为例,2*n - 2 = 8 = 9-1 = 17-9 )。从第二行开始,每两个纵列之间隔一个数字,假定行数为i,该数字与前一个数字的interval 为 i+2*n-2-2(i-1) (第三行,i=3,n=5, 3+2*5-2-2(3-1) = 7)。

    这里有两种循环规则,第二种依赖于第一种。我们用两遍循环去输出,第一层是按 i 行遍历,第二层是从 i 开始,间隔 2*n - 2 ,遍历。第二层循环里面寻找与 i 间隔 i+2*n-2-2(i-1) 的数。

    另外一个小技巧,使用StringBuilder来拼接字符串。

    解法:https://raw.githubusercontent.com/chy996633/leetcode/be515a6a088de4f0e882ccb4fc7cd9e1fcf5464d/src/ZigZagConversion.java

    public class ZigZagConversion {
    
        public String convert(String s, int numRows) {
            if (numRows <= 1) return s;
            if (numRows == s.length()) return s;
            StringBuilder res = new StringBuilder();
            int x = 2 * numRows - 2;
            for (int i=0;i<numRows;i++) {
                for(int j=i;j<s.length();j +=x){
                    res.append(s.charAt(j));
                    int y = j + x - 2 * i;
                    if (i != 0 && i != numRows-1 && y < s.length()) res.append(s.charAt(y));
                }
            }
            return res.toString();
        }
    
    }

    Review: 学习英文

    题目:微服务文章 - Smart endpoints and dumb pipes

    内容概述:这节没有太读懂,大意是微服务架构在终端是解耦 和 有凝聚力的,单个服务对外的通信基于轻量级机制,一般是基于HTTP协议 或 RESTful API。通信机制应当尽可能dumb,终端尽可能smart。

    Stress 作为动词有强调之意。fabric 有布料/结构之意。fine-grained 细粒度。coarser-grained 粗粒度。

    Tips: 知识点

    Java中 @Transient 这个注解在Hibernate中用于标注不需要作持久化操作的字段。如果字段没有标注@Transient ,Hibernate会默认进行持久化,这时如果数据库表没有相应字段就会报错。

     

    Share: 价值观

    人生的结果 = 思维方式 * 热情 * 能力。 努力发展出看问题的不同角度,专注并且投入热情,加上能力,就可以做出好的结果。

  • 相关阅读:
    vscode中使用less写css样式出现红色波浪线
    vue报错error Trailing spaces not allowed no-trailing-spaces
    visual code 报错error Expected space or tab after '//' in comment spaced-comment
    笔记本电脑已经启动却黑屏
    连接MySQL报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
    IDEA搭建基于maven的springboot工程
    eclipse 下修改Dynamic Web Modulle 的问题
    firefox(火狐)下 js中设置checkbox属性checked="checked"已有,但复选框却不显示勾选的原因
    unbtun python tab补全
    python之路:进阶篇 内置函数
  • 原文地址:https://www.cnblogs.com/andrew-chen/p/10361840.html
Copyright © 2011-2022 走看看