CSS块级元素水平居中
div元素水平居中
div {
margin: 0 auto;
}
img元素水平居中
img元素为内联元素,要设置display属性
img {
margin: 0 auto;
display: block;
}
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) {
...
树深度优先遍历实例
代码实例
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 :...
程序变量命名风格简介
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
剑指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...
剑指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++) {
...
剑指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) {
...
剑指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...
剑指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) {
...
剑指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;
...
332 post articles, 34 pages.