- 博客(37)
- 资源 (16)
- 收藏
- 关注
转载 只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
find the first unique character in a string and you can just traverse this string only one time. if there is no such character, just return '#' and '#' will not appear in the string, else return the
2016-07-29 22:06:26 1549
原创 反转二叉树--递归和非递归
【如题】对一棵二叉树进行反转,即各个节点的左右子树进行反转。【方法一】非递归层序遍历:每遍历一个结点,对其左右结点进行交换。交换根结点的左右子树;交换第二层结点的左右子树。。。。。。。TreeNode* inverse(TreeNode* root){ if(root==NULL) return NULL; queue que; que.push(r
2016-07-29 20:39:15 6233
转载 判断两个字符串是否由相同字符组成
【题目描述】如题:写一个算法来判断两个字符串是否为换位字符串。(换位字符串是指组成字符串的字符相同,但位置不同)【方法一】假设为ASCII码字符串,那么可以分配两个256大小的int数组,每个数组用于统计一个字符串各个字符出现的次数,最后,比较这两个int数组,看是否每个元素都相同。时间复杂度为O(n)。int IsSame(char* str1, char
2016-07-28 09:43:14 5413 1
转载 二叉排序树中的第k小元素
【题目描述】如题:查找二叉排序树中的第k小元素【若是结点的话,就直接输出TreeNode就行】。即leetcode的230题【方法一】1、计算左子树元素个数left。2、 left+1 = K,则根节点即为第K个元素 left >=k, 则第K个元素在左子树中, left +1 K-left-1元素。计算树中的节点个数
2016-07-28 08:37:45 6317 1
转载 单链表是否有环,求环起点,环长等
1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。 就是所谓的追击相遇问题: 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每
2016-07-26 08:25:11 1593
转载 查找链表的中间节点
转自:http://blog.csdn.net/wkupaochuan/article/details/8663335题目的解法当然不可能是一次遍历得到链表长度,然后再遍历一半,那是最最没办法的办法。在链表中很多题目的解法都跟大小指针有关。比如这道题目,设立两个指针,一个单步走,一个两步走,当大步指针到达链表尾部的时候,小步指针也正好位于链表中间位置。算法实现如下:
2016-07-26 07:53:02 882
转载 海量数据中找出前k大数(topk问题)
前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。
2016-07-23 10:59:36 23790 2
转载 TCP/IP三次握手,四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:
2016-07-23 10:29:45 334
转载 几种进程间的通信方式
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。#信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问
2016-07-22 23:25:18 309
转载 数组中只出现一次的数
本文地址:http://blog.csdn.net/morewindows/article/details/12684497转载请标明出处,谢谢。欢迎关注微博:http://weibo.com/MoreWindows 首先看看题目要求:数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法找到x。 这个题目非常有意思,在
2016-07-21 22:50:27 352
转载 SecureCRT上传、下载文件(使用sz与rz命令)
利用SecureCRT上传、下载文件(使用sz与rz命令) 借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器。 其中,对于sz和rz的理解与记忆我用了如下的方法(很多时候容易搞混): sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to ci
2016-07-21 16:14:55 536
转载 查找数组中的逆序对
题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。输入:每个测试案例包括两行:第一行包含一个整数n,表示数组中的元素个数。其中1 第二行包含n个整数,每个数组均为int类型。输出:对应每个测试案例,输出一个整数,表示数组中的逆序对的总数。样例输入:47 5 6 4
2016-07-19 23:08:55 6364 3
转载 归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。[cpp] view plain copy
2016-07-19 23:07:31 390
转载 数组循环移位
设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。 不合题意的解法如下: 我们先试验简单的办法,可以每次将数组中的元素右移一位,循环K次。abcd1234--->4abcd123--->34abcd12--->234abcd1--->1234abcd。代码如下所示:[cpp] view pla
2016-07-18 22:39:48 574
转载 排序算法总结
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,
2016-07-17 15:25:20 565
原创 一个无序数组中两个数之和等于给定的值sum
【问题描述】给定一个数组,求两个数之和=给定值sum的所有组合个数。【变形】两个数之和=sum的任意一组数【方法一】穷举法从数组中任意找两个数,看其和是否=sum。时间复杂度O(N^2)【方法二】先排序,然后定义两个指针,一个i=0指向数组头,一个j=len-1指向数组的尾,看其和是否==sum;若==,则查找成功返回;若>sum,则尾指针j--;若时间复杂
2016-07-16 11:47:11 16001 1
转载 连续子数组的最大和
【问题描述】输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间负责度为O(n)【解析】看到O(n)时间复杂度,我们就应该能够想到我们只能对整个数组进行一次扫描,在扫描过程中求出最大连续子序列和以及子序列的起点和终点位置。假如输入数组为{1,-2,3,10,-4,7,2,-5},我们尝试从头到尾累加其中的正数,
2016-07-16 10:42:21 359
转载 寻找两个有序数组中的第K个数或者中位数
假设有长度分为为M和N的两个升序数组A和B,在A和B两个数组中查找第K大的数,即将A和B按升序合并后的第K个数。解法一:使用两个指针指向A和B的开头,很容易在O(M+N)的时间内完成,此算法略过。解法二:使用二分的方法。算法思想在代码注释中[cpp] view plain copy print?#include
2016-07-14 17:28:28 1818
转载 求一个数组中第k大的数
求一个数组中第k大的数【方法一】冒泡:因为只要冒泡k趟即可,第一趟冒泡第一大,第二次冒泡第二大,第k次冒泡第k大,时间复杂度为O(kn),n为数组长度。但是我们都知道快速排序是对冒泡的改进,降低冒泡的递归深度,使时间复杂度降低到O(nlgn),为什么不用快排呢?那么快排的时间复杂度又是多少呢?【方法二】快排--不用完全快排完成:因为快排每次将数组划分为两组加一个枢纽
2016-07-14 16:50:33 1866
原创 复杂链表的复制
【问题描述】有一个这样的复杂链表:每个节点有一个数据域val,一个指向下一个节点的next指针;和一个指向链表中任意一个节点或者为NULL的random指针;现要求复制一个完全一样的链表出来。【思路】方法一:蛮力法。①首先,复制链表的节点,暂时不处理随机指针;②针对每个节点,用暴力法搜索原链表找出,随机指针的指向节点,然后新链表的随机指针同样指向该节点。时间复杂度:O(N2
2016-07-14 15:11:24 422
原创 topk--堆排序--小顶堆
【问题描述】假设需要我们在一堆海量数据中找出排名前k的数据;最好的方法是用最小堆排序,直接用前k个数据建立一个小顶堆,然后遍历剩余的数,①如果此数②如果此数>堆顶的数,则将此数和堆顶的数交换,然后从堆顶向下调整堆,使其重新满足小顶堆。【说明】堆的存储一般用数组来表示堆,第i个节点的父节点下标为i/2-1;它的左右节点下标分别为:2*i+1和2*1+2【代码】
2016-07-14 07:58:54 5544
转载 python机器学习sklearn数据集iris介绍
############################说明:# 撰写本文的原因是,笔者在研究博文“http://python.jobbole.com/83563/”中发现# 原内容有少量笔误,并且对入门学友缺少一些信息。于是笔者做了增补,主要有:# 1.查询并简述了涉及的大部分算法;# 2.添加了连接或资源供进一步查询;# 3.增加了
2016-07-11 14:54:41 11177
转载 python机器学习scikit-learn中的数据集简介
在windows下安装sklearn,直接下载winpython安装就行了。自行选择32或64位。 http://sourceforge.net/projects/winpython/后面本文都把sklearn简称sk。sk已经自带了一些数据集,先看iris和digits:from sklearn import datasetsiris = datasets.load_iris(
2016-07-10 22:34:51 5839
转载 【机器学习实验】scikit-learn的主要模块和基本使用
引言对于一些开始搞机器学习算法有害怕下手的小朋友,该如何快速入门,这让人挺挣扎的。在从事数据科学的人中,最常用的工具就是R和Python了,每个工具都有其利弊,但是Python在各方面都相对胜出一些,这是因为scikit-learn库实现了很多机器学习算法。加载数据(Data Loading)我们假设输入时一个特征矩阵或者csv文件。首先,数据应该被载入内存中。scikit
2016-07-10 17:07:30 1882
转载 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
一、标准化(Z-Score),或者去除均值和方差缩放公式为:(X-mean)/std 计算时对每个属性/每列分别进行。将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。实现时,有两种不同的方式:使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标
2016-07-10 17:05:14 1849
原创 python3.x 和 python2.x关于 urllib的用法
在python2.x版本中可以直接使用import urllib来进行操作,但是python3.x版本中使用的是import urllib.request来进行操作,下面是简单的例子:python2.ximport urlliburl = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345'text
2016-07-10 16:34:13 2319
转载 urllib和urllib2区别 python2.x
作为一个Python菜鸟,之前一直懵懂于urllib和urllib2,以为2是1的升级版。今天看到老外写的一篇《Python: difference between urllib and urllib2》才明白其中的区别。 You might be intrigued by the existence of two separate URL modules in Pyt
2016-07-10 16:04:13 707
转载 二分查找算法
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为: 1.第一步查找中间元素,即5,由于5 2.寻找{6, 7, 8,
2016-07-07 23:15:01 391
转载 C语言中实现数组的动态增长
原理: 在C语言中数组下标访问可以看成指针的偏移访问1、对表进行检查,看看它是否真的已满2、如果表确实已满,使用realloc()函数扩展表的长度,并进行检查,确保realloc()操作成功进行。3、在表中增加所需要的项目code:int current_element=0;int total_element=128;char *dynamic=mall
2016-07-07 22:44:42 3930
转载 归并排序
目录要点 归并排序的基本思想算法分析 归并排序算法的性能 时间复杂度 空间复杂度 算法稳定性 归并排序和堆排序、快速排序的比较完整参考代码 Java版本参考资料相关阅读回到顶部要点归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,
2016-07-07 09:38:29 473
转载 合并两个有序数组为一个有序数组
二、问题:两个有序数组,合并成一个有序数组,假设第一个数组空间足够容纳两个数组。分析:考虑到a数组很大,可以直接在a数组上进行合并,但是要讲究效率。如果单纯从前往后合并,那么效率会非常低,因为a数组后面的数字需要不停的移动。换一种思路,我们采用从后往前合并,首先计算出总长度,设置一个指针从a数组最后往前移动。算法代码:{CSDN:CODE:1748851
2016-07-06 21:49:44 7070
转载 有100W个关键字,长度小于等于50字节。用高效的算法找出top10的热词,并对内存的占用不超过1MB。
①先把100W个关键字hash映射到小文件,根据题意,100W*50B = 50*10^6B = 50M,而内存只有1M,故干脆搞一个hash函数 % 50,分解成50个小文件;②针对对每个小文件依次运用hashmap(key,value)完成每个key的value次数统计,后用堆找出每个小文件中value次数最大的top 10;③最后依次对每两小文件的top 10归并,得到最终的to
2016-07-05 17:29:02 1371
转载 【Top-k问题】如何从海量数据中找出前k大数
1. 问题描述在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载率最高的前10首歌等等。2. 当前解决方案针对top k类问题,通常比较好的方案是【分治+trie树/hash+小顶堆】,即先将数据集按
2016-07-05 17:24:42 4450
转载 awk 实例练习(二)
先来总结一下awk内置变量:ARGC 命令行参数个数ARGV 命令行参数排列ENVIRON 支持队列中系统环境变量的使用FILENAME awk浏览文件名FNR 浏览文件的记录数FS 设置输入域分隔符,等价于命令行-F选项NF 浏览记录的域个数
2016-07-01 22:47:15 652
转载 awk 实例练习(一)
前一篇学习了awk的基本知识,现在来做一些练习加深一下印象。假设我们有这样一个待处理的文件"grade.txt":M.Tansley 05/99 48311 Green 8 40 44J.Lulu 06/99 48317 green 9 24 26P.Bunny 02
2016-07-01 21:17:24 338
转载 Linux:awk命令
简单使用:awk :对于文件中一行行的独处来执行操作 。awk -F :'{print $1,$4}' :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 。AWK命令介绍awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息 1
2016-07-01 17:25:55 475
转载 hadoop常用操作命令汇总
* 文件操作 * 查看目录文件 * $ hadoop dfs -ls /user/cl * * 创建文件目录 * $ hadoop dfs -mkdir /user/cl/temp * * 删除文件 * $ hadoop dfs -rm /user/cl/temp/a.txt * * 删除目录与目录下所有文件 * $ hadoop dfs -rmr /u
2016-07-01 09:40:34 747
集体智慧编程(中文版)
2016-02-25
Maven下建立web工程详细步骤
2012-07-11
Spring Security 3.x.chm 中文参考手册
2012-07-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人