Algorithm

题目描述

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

Example

输入123->321 输入-123->-321 输入120->21

题目解答

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;

public class Solution1 {
    public int[] reverseNumber(int num) {

        int res = 0;
        while(num != 0) {

            int pod = num % 10;
            if(res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && pod > 7)) {
                return 0;
            }
            if(res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && pod < -8)) {
                return 0;
            }
            res = res * 10 + pod;
            num = num / 10;
        }
        return res;
    }
}

此题主要考察对栈的使用,如果不使用其它辅助类,则要考虑Int的整数溢出问题。时间复杂度O(log(n)),空间复杂度为O(1)

Review

Speed-up-maven-build 本文主要讲解了作者是如何加速多项目工程不同开发语言的maven构建的。主要包括以下几个尝试:

跳过编译不需要的模块

如果在项目中构建时,修改了Java代码,则可以跳过对js的编译,主要使用-pl参数

1
mvn clean install -DskipTests -pl '!m7,!m8,!m18'

如果可能,开启并行构建

当代的计算机都是多核CPU,如果项目允许,可以开启Maven的并行构建来加速构建,主要使用-T 1C参数

1
mvn -T 1C clean install -nsu -DskipTests -pl '!m7,!m8,!m18,!m11,!m24'

只对新的修改进行构建

可以指定进行构建的文件来加速构建,主要使用-pl参数

1
mvn clean install -DskipTests -nsu -pl 'm7' -amd -T 1C

只进行编译

如果本地开发不需要进行打包安装操作,则可以只执行Compile命令,去除不必要的执行步骤

1
mvn clean -nsu compiler:compile compiler:testCompiler -T 1C

对大项目进行拆分

拆分后就可以进行指定工程的编译了

Tip

使用wdfzf实现对文件的快速移动与复制

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#copy file to target fuzzy
#c file1
c() {
    cp -v "$1" "$(awk -F ":" '{print $2}' ~/.warprc | fzf | sed "s|~|$HOME|")"
}
#mv file to target fuzzy
#vv file2
vv() {
    mv -v "$1" "$(awk -F ":" '{print $2}' ~/.warprc | fzf | sed "s|~|$HOME|")"
}

Share

今天分享一篇JAVA基础的文章,讲述了开发中对Map进行合并的几种方式。由于JAVA8的加持,操作方式更加多样,如Map.merge(),Stream.concat(),Stream.of(),以及使用第三方的StreamEx来实现。Java-merge-maps