- 博客(15)
- 资源 (6)
- 收藏
- 关注
原创 二进制的一些题
编程之美中,判断一个数是否为2的方幂给出的判断是:n > 0 && ((n&(n-1)) == 0)我的理解:如果n为奇数的话,最低位肯定为1,与比他小一的数与,只会消去最低位的1.如果n为偶数的话,则与它小1的数相与就为0
2013-04-28 13:42:30 569
原创 冒泡排序,快速排序,归并排序,选择排序,插入排序,堆排序
冒泡:public class BubbleSort { public static void main(String[] orgs){ int[] a = {2,1,10,2,8,6,7,20}; for(int i = 0 ; i < a.length; i++){ for(int j = 1 ; j <= a.length - 1 - i; j++){ if(
2013-04-28 10:12:27 538
原创 二叉查找树的后继
如果是先序排列的话Tree-Successor(x){ if(left(x) != null) return Tree-MiniMun(left(x)); if(right(x) != null) { return Tree-MaxMun(right(x)); } y = p[x]; while(y != null
2013-04-20 14:53:01 641 1
原创 拓扑排序步骤
首先获取所有的入度为0的顶点,入队列从队列中获取一个入度为0的顶点 获取该顶点边,将边的另一端顶点入度减一,如果为0,也入队列利用一个拓扑排序,可以判断有向图是否带环。做法就是:遍历一个顶点,记录count++。最后如果发现count数小于图的顶点数,就有环。还有一个判断有向图是否带环的方法:利用深度优先,遍历一个图。图的每一个顶点设置一个颜色属性,初
2013-04-18 13:45:31 900
原创 Python发邮件代码
class BaseMail: def __init__(self,smtp,bSmtpAuth, sender, pwd): self.smtp = smtp; self.bSmtpAuth = bSmtpAuth; self.sender = sender; self.pwd = pwd; def _parserS
2013-04-17 16:05:03 668
原创 字典树和使用场景
字典树,用来统计一篇文章中某个单词出现的次数.比hashmap要节省空间.我给出的例子,是输入很多个6位数字,统计每个数字出现的次数.因为是0-9个数字,所以next值也就是10.如果是26个字母,那么next值就是26,以此类推.字典树的建树方式很简单. #include "stdafx.h"using namespace std;// TODO: 在此处引用程序
2013-04-16 14:01:28 1079
原创 逆置链表
public ListNode reverseListNode(ListNode node){ ListNode pre = null; ListNode cur = node; while(cur != null){ ListNode next = cur.getNext(); cur.setNext(pre); pre = cur; cur = next;
2013-04-15 13:18:01 550
原创 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
这个题目,有一个陷阱。就是找到第一个只出现一次的字符。第一个 和 只出现一次 是两个条件。网上很多同学的答案,都只是满足了只出现一次,但是没有保证是第一个。所以如果输入aadbcc 那么应该输出的就是d了。所以,是不是应该还有一个数组,维护每个字母第一次出现的位置呢?
2013-04-04 22:25:03 644
原创 二叉查找树转为双向链表
二叉查找树的特性:左节点比其父节点要小,右节点比其父节点要大。原题是: 12 8 156 9 13 16变为链表: 6=8=9=12=13=15=16 所以,首先想到中序遍历中序遍历代码: void visit(Node node){ visit(node.left());println("n
2013-04-04 21:32:00 477
转载 素数筛法
转载自:http://blog.csdn.net/liukehua123/article/details/5482854素数筛法是这样的: 1.开一个大的bool型数组prime[],大小就是n+1就可以了.先把所有的下标为奇数的标为true,下标为偶数的标为false. 2.然后: for( i=3; i { if(prime[i])
2013-04-04 16:32:51 510
原创 深度优先遍历和广度优先遍历
一个是先遍历完一个节点的所有子节点再按照同样的方式遍历兄弟节点一个是先遍历所有的兄弟节点,然后再遍历下一层的兄弟节点。所以,深度优先遍历通常采用递归的方式解决。广度优先遍历通常采用一个辅助的队列来解决。pesudoCodevisitDFS(Node d){ System.out.println(d is d); for(Node node : d的所有
2013-04-02 20:52:47 593
原创 KMP
public int[] computePrefix(char[] p) { int i, n, k; n = p.length; int[] next = new int[n]; next[1] = next[0] = 0; k = next[1]; for (i = 2; i <= n - 1; i++) { f
2013-04-02 15:07:19 499
原创 BF算法
public int contains(String src, String pattern) { if (src == null || pattern == null) { return -1; } int lengthSrc = src.length(); int lengthPattern = pattern.length(); if (lengthPatter
2013-04-02 13:58:20 738
原创 删除已排序数组中的重复数
public class DuplicatedNumberHandler { public static void main(String[] orgs){ int[] arr = {1,1,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6}; DuplicatedNumberHandler handler = new DuplicatedNumberHandler()
2013-04-01 16:23:44 585
原创 查找第N大的数
public class MaxNumberFinder { public int findTheNNumber(int[] arr,int n,int start,int end){ int ret = -1; int p = partition2(arr, start, end); if(n == p){ return arr[p]; }else if(n > p){
2013-04-01 11:05:41 590
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人