Refactoring to Microservices
Application modernization is the process of converting a legacy application to one having a modern architecture and technology stack. A big bang rewrite is when you develop a new application from ...
Application modernization is the process of converting a legacy application to one having a modern architecture and technology stack. A big bang rewrite is when you develop a new application from ...
问题93 复原IP地址 https://leetcode-cn.com/problems/restore-ip-addresses/ 这个题目一开始我用的是一种简单粗暴的笨办法,就是循环遍历,得到所有可能的分割结果,然后筛选出符合IP地址格式的结果。这种方法先不说时间效率,代码看起来就繁琐不美观。 其实这个题目算是比较典型的回溯法题目,用回溯法的解体模板去套的话,并不难写出来。回溯遍历,...
问题89 格雷编码 ★★☆☆☆ https://leetcode-cn.com/problems/gray-code/ 这个题目本质上还是位操作,关键点是如果我们有了n-1位的格雷编码,如何得到n位的格雷编码呢?顺序遍历挨个高位补一位二进制位0,结果和n-1位的格雷编码一样。接着,倒序遍历挨个高位补一位二进制位1,并追加到n-1位格雷编码的末尾。可以推断,这样得到的结果是符合要求的格雷编码...
问题401 二进制手表 https://leetcode-cn.com/problems/binary-watch/ 这个题目我一开始的思路是回溯法,把题目要求抽象为从一个包含N个元素的数组中,挑选M个数出来,要求它们的和满足一定限制,返回所有可能的挑选对应的和的集合。然后吭哧吭哧写了一堆代码,正确性没有问题,但是效率较差。 看了一眼官方题解才恍然大悟,其实题目描述已经很明显的是二进制位...
问题393 UTF-8编码验证 ★☆☆☆☆ https://leetcode.cn/problems/utf-8-validation/ 这个题目坦白讲我觉得够不上中等难度,主要是解题思路比较直接。基于给定的UTF-8编码规则,判断一个byte array是不是一串有效的UTF-8字符,那么很直接的,就挨个字符遍历判断嘛。当遍历到某个位置时,判断当前字节是不是满足四种编码方式之一,如果不满...
问题231 2的幂 ★☆☆☆☆ https://leetcode-cn.com/problems/power-of-two/ 2的幂有什么特点呢?2的幂的二进制表示中只有一个二进制位1,因此,利用n&(n-1)很容易判断是否是2的幂。 public boolean isPowerOfTwo(int n) { return n > 0 && (n &am...
问题191 位1的个数 ★☆☆☆☆ https://leetcode-cn.com/problems/number-of-1-bits/ 这个题目最简单的解法就是循环取最低位的二进制位,判断是1还是0,累加计数。需要注意的一点是,Java不支持无符号整数,右移二进制位时要做逻辑右移。 对于题目中额外提出的,如何能优化效率呢?对于整型编码具备一定认知的话,可以通过n&(n-1)来操...
问题190 颠倒二进制位 ★☆☆☆☆ https://leetcode-cn.com/problems/reverse-bits/ 这个题目的解题思路很直接,通过右移循环取出最低位的二进制位,然后通过左移累积结果值即可。 那么题目额外提出的,如果涉及大量调用,如何优化效率呢?一开始我没什么思路,看了一下官方题解,这个所谓的“位运算分治”,看描述还好理解,但是代码看不懂…… 我又思考了下...
问题136 只出现一次的数字 ★☆☆☆☆ https://leetcode-cn.com/problems/single-number/ 这个题目本质上是考察二进制位操作,利用v ^ v = 0的特性,很容易想到: public int singleNumber(int[] nums) { int ret = 0; for (int num : nums) { ret ...
问题97 交错字符串 ★★★☆☆ https://leetcode-cn.com/problems/interleaving-string/ 我觉得这个题目有点难度,光是题目要求就需要理解消化,将两个字符串分别划分为两个子串序列,子串个数相等或者相差为1,然后把两个子串序列交错的拼接成一个字符串,现在给定三个字符串,问是否存在某种划分方式,使得划分以后得到的两个子串序列交错以后可以组成第三...