- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 Catch That Cow
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,0
2014-05-30 12:08:40 1062
原创 二叉查找树
import java.util.Random;public class BST,Value> { private Node root; private class Node{ private Key key; private Value val; private Node left,right; private int N; public Node(Key key
2014-05-28 18:02:17 724
原创 在O(1)时间删除链表结点
删除链表结点注意保证链表不会断开。删除的节点是尾结点时,并不能保证是O(1)时间。但平均下来时间复杂度仍然保持在O(1)。
2014-05-23 16:56:52 714
原创 数组中最小的K个数
思路:1、排序,取前k个元素;O(NlogN);2、分治,O(n),利用快排的思想;3、用set 维护最小的k个数,O(NlogK),可处理海量数据。
2014-05-23 14:48:03 1068
原创 二进制整数中1的个数
#include using namespace std;int NumberOf1_1(int n){ int count=0; while(n){ if(n&1) count++; n=n >> 1; } //当n为负数时,会出现死循环,故此法不可取 return count;}int NumberOf1(int
2014-05-21 16:59:06 526
原创 根据前序和中序重建二叉树
注意:1、仅根据前序和后序无法构建唯一的二叉树;2、二叉树前序遍历,第一个数字总是树的根节点的值;3、中序遍历中,根节点的值在序列的中间,左子树的值子在根节点的值得左边,右字树的值在根节点的值得右边;4、思路:递归
2014-05-21 15:13:46 1236
原创 判断字符串s2能否由s1旋转得到
* 判断s2能否由s1旋转得到 * 已知isSunString函数,但只能调用一次 * 思路:s1=xy; s2=yx;令s1=s1+s1=xyxy;则s2必为s1的子串
2014-05-20 20:05:39 1401
原创 Linux用户进程间通信
管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访
2014-05-20 09:04:19 582
原创 TCP协议3次握手/4次握手
TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(
2014-05-20 08:53:16 635
原创 将字符串中连续出现的重复字母进行压缩
/*通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。要求实现
2014-05-19 20:08:35 4057
原创 用堆排序将整形无序数组排序
堆排序分为两个阶段:1、将原始数组组装成一个堆;2、从堆顶逐个取出元素并得到排序结果。(如果是最大堆,则是重复删除最大元素,然后从后往前放入到数组。)用sink()只需扫描数组中的一半元素。堆排序可以不需要额外的空间,最优的利用空间和时间。可用于嵌入式系统。缺点:无法利用缓存,影响缓存命中。
2014-05-11 21:19:28 1217
原创 最大堆
swim() 表示上浮:作者将其比喻为黑帮新人(插入的新元素),能力高(值大的)的被提升,将能力不够的前辈踩在脚下,直到遇到一个更强的领导。sink ()表示下沉:比喻为黑帮领导,能力不行的或退休的(删除)就被下属取代。每次帮派有新人加入,或有领到退休,帮内都必须重新论资排辈。这个比喻还是挺有意思的。
2014-05-11 19:57:15 703
原创 快速排序
学快排的时候参考了这篇博客http://blog.csdn.net/morewindows/article/details/6684558,博主关于快排的讲解通俗易懂,表示感谢。算法原书的快排切分代码写的有点啰嗦,刚看到 j=hi+1那一行还以为写错了,结果后面用的是 a[--j],无语。不过后文,作者自己也说部分代码冗余的,只是为了提醒读者注意访问数组时不要越界。顿时感觉国外的作者写书真的很用心。
2014-05-11 16:48:51 817
原创 归并排序
书看到归并排序这一部分的时候,感觉java中乱七八糟的接口、基本类型和泛型输入输出的问题真是影响对算法的理解,还是直接用C++实现比较直接。#include using namespace std;// 这样写可能效率不咋地,但思路比较清晰void merge(int a[],int low,int mid,int high){ int l=mid-low+1; i
2014-05-11 14:59:09 684
原创 希尔排序
public class Sort { public static void swap(Comparable[] a,int i,int j){ Comparable temp=a[i]; a[i]=a[j]; a[j]=temp; } public static boolean less(Comparable v,Comparable w){ return v.compar
2014-05-11 13:50:25 615
原创 先进先出队列(链表实现)
import java.util.Scanner;import java.util.Iterator;// 先进先出队列public class MyQueue implements Iterable { private Node first; private Node last; private int N; private class Node{ Item item;
2014-05-10 18:45:55 2197
原创 下压堆栈(链表实现)
import java.util.Iterator;import java.util.Scanner;public class Stack implements Iterable { private Node first;// 栈顶 private int N;// 元素数量 // 定义结点的嵌套类 private class Node{ Item item; Node nex
2014-05-10 16:27:03 964
原创 泛型定容栈
import java.util.*;//泛型定容栈 //泛型:类型参数化,便于处理不同类型的数据public class FixedCapacityStack { private Item[] a; private int N; public FixedCapacityStack(int cap){ // java中不允许直接创建泛型数组,此处用类型转换来实现 // 这样写
2014-05-10 14:17:13 1267
原创 定容字符串栈
import java.util.Scanner;public class FixedCapacityStackOfStrings { private String[] a; private int N; public FixedCapacityStackOfStrings(int cap){ a=new String[cap]; } public boolean isEmpty
2014-05-10 13:56:59 1263 1
原创 二分查找
import java.util.Arrays;import java.util.Scanner;public class BinarySearch { public static int rank(int key,int[] a){ //数组必须是有序的 int low=0; int high=a.length-1; while( low <= high ){ //被
2014-05-10 12:49:00 531
原创 线性表的顺序存储
#include #include using namespace std;#define SIZE 100struct SqList{ int data[SIZE]; int length; SqList() { length=0; }};int GetElem(SqList *l,int i){ if(l->l
2014-05-09 14:36:55 483
原创 运行startx后Ubuntu密码正确进不去的问题
今天在命令行里敲了 startx ,然后系统重启,输入密码后,跳转到一下界面,之后又返回到登陆界面。一直这样循环输入密码,进不去系统。然后不得不用手机在网上查找解决办法。解决步骤如下:1,Ctrl+Alt+F3 切换到控制台登陆2,cd~3,rm -rf .Xaut*4, Ctrl+Alt+F7回到登陆界面,输入密码正常登陆。进不去的原因是什么?在tty执行
2014-05-03 16:01:08 1989 1
原创 awk命令学习
一、AWK简介 AWK名字来源于三位创造者Aho、Weinberger和Kernighan统称。 AWK擅长处理文本数据。二、AWK的调用方式 awk [-Ffs] [-v var=value] [program | -f progfile ...] [file ...]
2014-05-02 21:29:39 592
原创 Windows下notepad++配置java编译环境
前提: 电脑里安装了javac,java(只要下载个jdk就都有了),notepad++开始配置:首先应该新建个环境变量,地址是javac和java所在的当前目录,怎么检测环境变量是否设置正确呢?只要在“运行”那里输入java和javac就能运行这两个程序就说明设置正确。一. 新建两个脚本:1.文件名:javacnpp.bat 内容:@echo onjava
2014-05-02 18:02:59 843
原创 硬链接与软链接
对于一个文件来说,有唯一的索引接点(inode)与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。注意在Linux下是一切皆文件的啊,文件夹、新加的硬盘 ...都可以看着文件来处理的啊。 连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows下的快
2014-05-02 17:56:56 458
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人