5 ARTS打卡第五周(2019-09-01)

Algorithm

本周题目:283.移动零
解题思路:今天这道题目耗费了三个半小时还没解出来,因为一开始的思路错误了,导致一直在死胡同里面钻,之后要给自己解题设置时间限制,最多45分钟,如果没解出来就要去看别人的题解思路了。今天的这道题,我一直用二分查找的思想在想这道题,但是一直行不通,错了四次,然后我看了题解思路之后,豁然开朗,原来这道题的思路这么简单,我却花费了这么久还没解出来!!之后在解题的时候要多多转换思路,不能一直蒙着头一直往前冲。官方的题解思路是:这道题目可以分为两个子问题进行,1.不为0的数字移动至前面,2移动完成后在最后一位不为0的数字后的索引填充0。这样简单用几行代码就可以完成这道题目了。我用了数十行代码还没解决。
题解代码:

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

Review

What I learned from doing 1000 code reviews
这篇文章告诉我们如何在编码中改掉一些坏习惯

Tip

编码思路:通过拆解功能模块为若干个子问题,将关注点移至某子问题上,而不受其他子问题的困扰。我在这种开发模式上获益很大,在逐一解决子问题的过程中,我发现我格外的轻松。考虑的方面仅仅只是子问题的部分,其他的子问题对我来说是不可见的,我是根本不用去考虑,子问题封装的方法,我在另一个子问题还可以复用,一举两得。跟我之前面对大问题去编码的情况有着质一样的变化。那时候我考虑这个考虑那个,最后把自己拧成了一团麻,不仅耗费时间,而且问题还得不到完善的解决。所以在面对一个模块,或者一个功能的时候,一定要三思而后行,将模块的需求,及主要的情况,以及面对临界值的考虑思考清楚,头脑中有了成型的思路以后,编码的速度奇快无比,而且还很轻松,千万不能一股脑的就立马开始敲代码。

Share

修改tomcat端口方法
让服务器可以启动多个tomcat

你可能感兴趣的:(5 ARTS打卡第五周(2019-09-01))