Home

CSS块级元素水平居中

div元素水平居中 div { margin: 0 auto; } img元素水平居中 img元素为内联元素,要设置display属性 img { margin: 0 auto; display: block; }

Read more

Java获取应用的所有Class对象

代码实例 获取系统类加载器(Application ClassLoader)的类路径,遍历类路径的所有子目录,获取所有类名,并加载 @SneakyThrows private Set<Class<?>> getAllClasses(File file, String classPathRoot) { Set<Class<?>> classSet = new HashSet<>(); File[] files = file.listFiles(); if (files != null) { for (File childFile : files) { ...

Read more

树深度优先遍历实例

代码实例 public Set<Integer> getOrganizationRangeIdSet(int rootId) { Set<Integer> resultSet = new HashSet<>(); resultSet.add(rootId); OrganizationMapper organizationMapper = getBaseMapper(); Set<Integer> childrenOrganizationIdSet = organizationMapper.getChildrenOrganizationIdSet(rootId); for(Integer id :...

Read more

程序变量命名风格简介

Camel Case 驼峰式 Lower Camel Case 小驼峰 getName Upper Camel Case 大驼峰,又称Pascal case GetName Snake Case 蛇式 Lower Snake Case 小蛇式 get_name Upper Snake Case 大蛇式 GET_NAME Kebab Case 烤串式 get-name

Read more

剑指Offer 面试题11:数值的整数次方

数值的整数次方 题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 解题思路 解法一 先处理base为0的情况。0的0次方无意义,题目已排除了这种情况。0的负数次方无意义,这里返回结果为0。0的正数次方结果也为0。然后通过乘法计算乘方,最后通过指数是否为负数确定是否需要求倒数。 解法二 利用以下公式,将时间复杂度降至O(log n) \[a^n = \begin{cases} a^{\cfrac {n}{2}} \cdot a^{\cfrac {n}{2}} &(n为偶数)\\[3ex] a^{\cfrac {n - 1}{2}} \cdot...

Read more

剑指Offer 面试题10:二进制中1的个数

二进制中1的个数 题目描述 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示 解题思路 解法一 将被测试数字与数字1作按位与运算,根据运算结果得出被测试数字最低位是否为1。循环作右移操作,使被测试数字的32个二进制位逐一作为最低位 解法二 n & (n - 1)的结果是n的最右边1变为0,能做多少次操作则有多少个1 代码 解法一 public class Solution { public int NumberOf1(int n) { int count = 0; int andNumber = 1; for(int i = 0; i < 32; i++) { ...

Read more

剑指Offer 面试题09-4:矩形覆盖

矩形覆盖 题目描述 我们可以用2 × 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2×1的小矩形无重叠地覆盖一个2 × n的大矩形,总共有多少种方法? 解题思路 与青蛙跳台阶类似。假设我们从左上角开始覆盖,放置第一个矩形有两种情况,竖着放与横着放。竖着放的情况,剩下一个2 × (n - 1)的矩形需要覆盖。横着放的情况,右下角只能同样覆盖一个横着放的矩形,然后剩下一个2 × (n - 2)的矩形需要覆盖。得到$f(n) = f(n - 1) + f(n - 2)$,同斐波那契数列 代码 public class Solution { public int rectCover(int target) { if(target <= 0) { ...

Read more

剑指Offer 面试题09-3:变态跳台阶

变态跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路 解法一 跳台阶的延伸。青蛙的第一跳有n种情况,可以跳1级、2级……n级,得出$f(n) = f(n - 1) + f(n - 2) + \cdots + f(0)$。注意这里$f(0)$应该等于1,对应的是青蛙第一跳跳n级的情况。n从小到大循环计算结果并把结果存储起来以便后面计算使用。 解法二 数学推导 \[\begin{aligned} &f(n) = f(n - 1) + f(n - 2) + \cdots + f(0)\\[2ex] &f(n + 1) = f(n) + f(n - 1) + f(n - 2...

Read more

剑指Offer 面试题09-2:跳台阶

跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解题思路 青蛙跳n级台阶分为两种情况,即第一跳跳1级,以及第一跳跳2级。第一跳跳1级,剩余n-1级需要跳。第一跳跳2级,剩余n-2级需要跳。可得出$f(n) = f(n - 1) + f(n - 2)$。解法同斐波那契数列。 代码 public class Solution { public int JumpFloor(int target) { if (target <= 0) { return 0; } else if (target == 1) { ...

Read more

剑指Offer 面试题09-1:斐波那契数列

斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 解题思路 递归解法时间复杂度太高,有大量的重复计算。使用循环解法,关键在于保存当前计算项的前两项计算结果,避免重复计算。 代码 public class Solution { public int Fibonacci(int n) { if(n <= 0) { return 0; } else if(n == 1) { return 1; } else { int number1 = 0; ...

Read more