编程之美
文章平均质量分 75
BOY
这个作者很懒,什么都没留下…
展开
-
编程之美--求一个数是否为2的方幂
/** * 判断一个数是否是二的方幂 * @author Administrator * */public class Is2 { /** * 此题是求二个数的二进制中一的个数的扩展,求一个数是否是2的方幂,就是 * 看这个2中有几个1,如果有一个的话,那么这个数就是,否则就不是 * @param args */ public st原创 2012-10-29 13:25:29 · 724 阅读 · 0 评论 -
编程之美--数组循环移位
import java.util.Arrays;/** * 将一个数据循环右移 * * */public class CyclingSift { /** * 右移N 位,也就是 N % len位,此方法复杂度为 O(n2) * * @param array * @param len */ public stat原创 2012-10-22 17:08:42 · 542 阅读 · 0 评论 -
编程之美--找个符合条件的整数
题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0.解决这个问题首先考虑对于任意的N,是否这样的M一定存在。可以证明,M是一定存在的,而且不唯一。简单证明:因为 这是一个无穷数列,但是数列中的每一项取值范围都在[0, N-1]之间。所以这个无穷数列中间必定存在循环节。即假设有s,t均是正整数,且s,所以转载 2012-11-01 15:03:40 · 498 阅读 · 0 评论 -
编程之美--区间重合判断
import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;import java.util.List;import java.util.Scanner;public class SectionCoincide { static class Line { int x, y;原创 2012-10-23 17:02:30 · 1082 阅读 · 0 评论 -
编程之美--将数组分割成两个和最接近的数组(数组长度不限)
一种方法是直接搜索,搜索子集树,但太慢import java.util.Arrays;/** * 直接搜索求解,慢 * @author Administrator * */public class SplitArray { static final int MAX = 5; static int[] array = { 2, 5, 2, 1, 4 }; s原创 2012-10-24 15:10:55 · 4705 阅读 · 1 评论 -
编程之美--字符串循环移位包含问题
package structure;import java.util.Arrays;/** * * 字符串移位包含问题 问题:string a = "aabcd" ,string b = "cdaa" 判断将 a 字符串通过循环移位能否包含 串 b * 解法1:对 a 进行每次移位,然后再与 b 进行包含判断,这里利用KMP 进行匹配处理 解法2:a 的循环移位一定是 aa 的子原创 2012-10-24 17:06:38 · 1028 阅读 · 0 评论 -
编程之美--电话号码匹配
package structure;public class TelNumber { /** * 给你一个电话号码,显示出该电话号码可以组成的所有单词 */ static String[] s = { "", // 0 "", // 1 0 1 上面都没有字母 "abc", // 2 "def", // 3 "ghi原创 2012-10-25 08:04:40 · 707 阅读 · 0 评论 -
1-9,总共9个数字,不能重复,然后前一位数除以1,前两位数除以2,前三位数除以3,以此类推,前9位数除以9,都可以除尽
package structure;import java.util.concurrent.TimeUnit;/** * 1-9,总共9个数字,不能重复,然后前一位数除以1,前两位数除以2,前三位数除以3,以此类推,前9位数除以9, * * 利用搜索法就可以,因为约束条件较为苛刻,因此效率 很快 */public class Baidu { static int[] a原创 2012-10-25 13:27:34 · 3770 阅读 · 0 评论 -
编程之美--从无头链表中删除结点
package structure;import java.util.Iterator;/** * 该题目为:从无头链表中删除节点,而这个结点不是头也不是尾 * 我们只知道一个 p 指向链表中的一个结点,下面让我们把这个结点删除 * 想直接删除这个结点必需先知道 p 的前一个结点的引用,然后 前一个结点的 引用 .next = p.next * 这样就删除了,但引链表为单向链接,没原创 2012-10-25 14:38:43 · 669 阅读 · 0 评论 -
编程之美--计算字符串的相似度
package structure;/** * 计算字符串的相似度:对于两个不同的字符串,转成相同的字符串要几步(t) 1/(t+1)就是要求的字符串的相似度 * * * 思路:如果a[i] == b[j] 则继续计算 a[i+1] b [j+1] * 如果 a[i] != b[j] 我们可以采取以下的措施 * 1.添加 * 1.将 b[j] 添加到 a 中,继续判断原创 2012-10-25 09:52:55 · 460 阅读 · 0 评论 -
编程之美--判断两个链表是否相交
import java.util.HashSet;import java.util.Iterator;import java.util.Set;/** * 判断两个链表是否相交 */public class LinkedListedCross { static class Entry { int value; Entry next; public Entry(int原创 2012-10-27 09:25:39 · 743 阅读 · 0 评论 -
编程之美--求最大的K个数(快速排序原理实现)
import java.util.Arrays;import java.util.Random;/** * 求最大的K 个数,利用快速排序的思想,找出个一个数,将数组分成两个,Sa,Sb,满足 {Sa}>{Sb} * * @author Administrator * */public class getMaxK { static final Random rdm =原创 2012-10-31 10:20:02 · 1432 阅读 · 0 评论 -
编程之美--1的数目
/** * 求1 的个数 * * 对于 abcdef 几个数字,我们求小于abcdef 的所有数据中包含的1的个数,如果 P(13) = 6 对于分析,我们能得出以下结论 如:对于 c * 位上的数有以下三种情况 1. c=0 p= c 高位的数字 * C的位数 2. c=1 p = c 高位的数字*c的位数 + c 低位的数 3. c>1 * p = (c高位的数字+1) *c 位数原创 2012-10-31 09:04:33 · 483 阅读 · 0 评论 -
编程之美--求二叉树中节点的最大距离
/** * 求二叉树中的最大距离: * 其思想就是利用递归,在递的过程中记录其值,然后归的过程中就少了大量的计算 * 计算root 的到叶子的最大距离,假设这个最大距离以每一个结点为根,那么我们就求以所有为根的节点的最大距离 * 当计算 以 e 当根的最大距离时,由于 e 还有 left,与right,如果left=null 那么 它的leftMax = 0 * 同理如果r原创 2012-10-28 09:55:25 · 560 阅读 · 0 评论 -
编程之美--重建二叉树
/** * 重建二叉树 给两个序列:pre: a b d c e f in : d b a e c f 把这个二叉树创建出来 */public class ReBuilderTree { private Entry root; public void rebuild(String pre, String in) { root = rebuildHelper(pre, in原创 2012-10-28 12:18:53 · 569 阅读 · 0 评论 -
编程之美--分层次遍历二叉树
import java.util.ArrayList;import java.util.List;/** * * 分层遍历二叉树 * * 分层次遍历上面的树并且可以直接输出 i 层的元素(层次从0开始) 5 */ // 3 8public class ListTreeByLevel { // 2 4 6原创 2012-10-28 16:55:01 · 647 阅读 · 0 评论 -
不要被阶乘吓倒
public class JieCheng { /** * a 的阶乘最后有几个0 * 积为0 只有一种情况,那就是2*5才会为10,这样就产生了一个0 * 因此就是求 a的阶乘里面的因子2的个数与因子5的个数,然后取两者 * 中小的那个,因为5的频率比2要小,所以只求5的就可以了 * @param a */ pu原创 2012-10-20 19:21:16 · 396 阅读 · 0 评论 -
编程之美--求最大公约数
import java.math.BigInteger;public class Gcd { public static int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } /** * gcd(a,b) == gcd(a-b,b)// b == 0 则会元素循环,因此停止 * @param a原创 2012-10-21 10:13:24 · 440 阅读 · 0 评论 -
编程之美--反转整数二进制位
public class BitReverse { /** * 用ans 保存最后结果,其思路就是每次取 a的最后一次,然后加到ans 的后面 * @param a * @return */ public static int bitReverse(int a){ int ans = 0; for(int i=0;i<31;i++原创 2012-10-21 10:17:48 · 497 阅读 · 0 评论 -
编程之美--求Fibonacci
public class Fibonacci { /* | 1,1 ] * 利用公式: [fn,fn-1] = [f1,f0] * | 1,0 ]^(n-1) * @param n * @return */ public static int getFabonacci(int n) { if (n原创 2012-10-21 15:02:05 · 384 阅读 · 0 评论 -
编程之美--快速查找满足条件的两个数
import java.util.Arrays;/* * 快速查找满足条件的两个数 * */public class QuickFindTwoNumbers { /** * 在array,中找出两个数,使其和为 p 思路:遍历array, 在 array中查找 有无 p-array[i]这个数, * 因此该算法就变成了查找算法,怎么使查找复杂度最小,可以先排原创 2012-10-21 17:00:14 · 604 阅读 · 0 评论 -
编程之美--子数组中的最大乘积
import java.util.Arrays;/** * 求一个数组中子数组的最大乘积,子数组个数为n-1 * @author Administrator * */public class SubArrayMaxProduct { /** * 因为数据个数为n-1,我们可以枚举 O(n2); * @param array * @param l原创 2012-10-21 19:05:51 · 785 阅读 · 0 评论 -
编程之美--求数组连续子串最大和
/** * 求子数组之和的最大值 * */public class MaxSubSum { /** * 最基本的方法:枚举,找到开始,结束位置,求和 这里用到了三个循环,可以做一个优化 */ public static void execute(int[] array, int len) { int max = 0; for (int i = 0;原创 2012-10-22 14:04:12 · 1978 阅读 · 0 评论 -
编程之美--最短摘要的生成
package structure;import java.util.Arrays;import java.util.HashMap;import java.util.Map;/** * * 最短摘要的生成: 给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字, * 请说明思路并编程实现方法String extractSu原创 2012-10-26 11:19:29 · 1056 阅读 · 0 评论