/**
* 功能:确定某字符串的所有排列组合。
*/
注意:不考虑重复字符。若考虑重复字符,只需在加入permulations时去掉重复的字符串即可。
/**
* 思路:元素由少到多,将新的元素塞进所有字符串中间的任意可能位置。
* @param str
* @return
*/
public static ArrayList getPerms(...
分类:
其他好文 时间:
2015-08-11 18:44:24
阅读次数:
167
/**
* 功能:有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。计算小孩上楼梯的方式有多少种。
*/
两种方法:
方法一:
//递归法
/**
* 思路:自上而下的方式。
* 最后一步可能是从第n-1阶往上走1阶、从第n-2阶往上走2阶或从第n-3阶往上走3阶。
* 因此,抵达最后一阶的走法,抵达这最后三阶的方式的综合。
* ...
分类:
其他好文 时间:
2015-08-08 18:16:50
阅读次数:
2006
/**
* 功能:在二维平面上,有一些点,请找出经过点数最多的那条线。/**
* 思路:在任意两点之间画一条无线长的直线,用散列表追踪那条直线出现的次数最多。时间复杂度O(N*N)
* 注意:
* 1)用斜率和y轴截距来确定是否是同一条直线。
* 2)浮点数不一定能用二进制数准确表示,因此检查两个浮点数的差值是否在某个极小值(epsilon)内。
* 3)对于散...
分类:
其他好文 时间:
2015-08-08 15:05:13
阅读次数:
218
/**
* 功能:检查一个数是否为素数。
*/
两种方法:
方法一:/**
* 思路:从2到n-1进行迭代,每次迭代都检查能否整除。
* @param n
* @return
*/
public static boolean primeNaive(int n){
if(n<2)
return false;
for(int i=2;i<n;i++)...
分类:
其他好文 时间:
2015-08-08 15:04:52
阅读次数:
103
/**
* 功能:实现整数的乘法、减法和除法运算。只允许使用加号。
*/
//减法
public static int minus(int a,int b){
return a+negate(b);
}
//取反
/**
* 思路:对正数k的取反,只需要将-1连续加k次;对负数k的取反,只需要将1连续加k次。
* @param a
* @return
*/...
分类:
其他好文 时间:
2015-08-07 20:15:16
阅读次数:
177
/**
* 功能:给定直角坐标上的两条线,确定这两条线会不会相交。
*/
public class Line {
static double epsilon=0.000001;
public double slope;//斜率
public double yintercept;//与y轴的截距
public static void main(String[] args)...
分类:
其他好文 时间:
2015-08-07 20:15:15
阅读次数:
105
/**
* 功能:有个单色屏幕存储在一个一维字节数组中,使得8个连续像素可以存放在一个字节里。屏幕宽度位w,
* 且w可以被8整除(即一个字节不会分布在两行上),屏幕高度可由数组长度和屏幕宽度推算得出。
* 实现方法drawHorizontalLine(byte[] screen,
int width,int
x1,int
x2,int
y),绘制从点(x1,y)
* 到点...
分类:
其他好文 时间:
2015-08-07 13:22:59
阅读次数:
122
/**
* 功能:交换某个整数的奇数位和偶数位,使用指令越少越好(即,位0与位1交换,位2与位3交换,以此列推)。
*/
/**
* 思路:先操作奇数位,再操作偶数位。将数字n的奇数位右移1位,偶数位左移1位。
* @param x
* @return
*/
public static int swapOddEvenBits(int x){
//奇数位右移...
分类:
其他好文 时间:
2015-08-06 15:09:04
阅读次数:
112
/**
* 功能:给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数。
* (一个略大一个略小。)
*/
三种方法:
方法一:蛮力法
方法二:位操作法
/**
* 方法:位操作法
* 思路:获取后一个较大的数
* 1)计算c0和c1。c1是拖尾1的个数,c0是紧邻拖尾1的作坊一连串0的个数。
* 2)将最右边、...
分类:
其他好文 时间:
2015-08-06 13:17:24
阅读次数:
236
题目:解释代码(n&(n-1))==0的具体含义
1)(A&B)==0的含义
A和B的二进制表示的同一位置绝不会同为1。
2)n和n-1
若n的最低有效位为1,减去1后为0,其余为均相同,不符合要求。n的最低有效位为0,减去1时,必须向高位借1。
3)(n&(n-1))==0的含义
n的最高有效位为1,其余位为0。因此,n的值是2的某次方。
所以,(n...
分类:
其他好文 时间:
2015-08-06 13:15:27
阅读次数:
170