- 博客(41)
- 收藏
- 关注
原创 LeetCode -- Sort List
题目描述如下:Sort a linked list in O(n log n) time using constant space complexity.----------------------------------------------------------------------------------------题目咋一看似乎很简单,只是给一个链表排序,但是要求
2014-09-06 14:46:16
560
原创 LeetCode -- Max Points on a Line
题目如下:Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
2014-09-06 10:36:20
648
原创 LeetCode -- Reverse Words in a String
Reverse Words in a String Total Accepted: 30421 Total Submissions: 215668My SubmissionsGiven an input string, reverse the string word by word.For example,Given s = "the sky is blue",
2014-09-05 20:06:42
554
转载 C/C++ 笔试、面试题目大汇总(2)
C/C++ 笔试、面试题目大汇总2见上一篇:C/C++ 笔试、面试题目大汇总继续 ~~~~~~~~~一.找错题试题1:void test1(){ charstring[10]; char* str1 ="0123456789"; strcpy( string, str1 );} 试题2:void test2(){ ch
2014-09-01 14:53:30
814
转载 C/C++ 笔试、面试题目大汇总(1)
这些东西有点烦,有点无聊。如果要去C++面试就看看吧。几年前网上搜索的。刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善。 1.求下面函数的返回值( 微软)int func(x) { int countx =0; while(x) { countx ++; x = x&(x-1); } return countx; }
2014-09-01 14:50:13
594
原创 C++ primer笔记——第九章 顺序容器
顺序容器的元素按照其位置存储和访问。除了顺序容器之外,标准库还提供了几种关联容器,其元素按照键(key)排序。每组容器都提供一组不同的时间和功能的折中方案。顺序容器根据位置来存储和访问元素,元素的排列次序与元素值无关,而是由元素添加到容器的顺序决定。标准库定义了三种顺序容器:vector、list、dequeue。他们的差别在于元素访问的方式以及添加和删除元素相关操作的运行代价。标准库还提供了三种适配器。适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口来适应基础的容器类型。顺序容器适配器包括st
2014-08-26 18:09:12
934
原创 Topic Model之Probabilistic Latent Semantic Indexing(PLSI/PLSA)
Probabilistic Latent Semantic Indexing(PLSI/PLSA)是常用的话题模型之一,他通过生成模型来模拟文档的产生过程,然后用Maximum likelihood的方法估计模型中未知参数的值,来获取整个生成模型中的参数值,从而构建起整个生成模型。
2014-08-20 14:30:19
1896
原创 数据结构——二叉树的遍历
二叉树主要有三种遍历方式:前序遍历、中序遍历和后序遍历,每种方式都有递归和非递归两种方法。递归的方法简单明了,但是会比较耗时,非递归的方法效率相对较高,但是算法也比较晦涩。本文就这三种遍历方式做简单的介绍。
2014-08-01 11:11:21
1324
原创 算法导论——lec 13 贪心算法与图上算法
之前我们介绍了用动态规划的方法来解决一些最优化的问题。但对于有些最优化问题来说,用动态规划就是“高射炮打蚊子”,采用一些更加简单有效的方法就可以解决。贪心算法就是其中之一。贪心算法是使所做的选择看起来是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解。
2014-07-13 13:31:13
1623
原创 算法导论——lec 12 平摊分析与优先队列
在平摊分析中,执行一系列数据结构操作所需要的时间是通过对执行的所有操作求平均得出,反映在任何情况下(即最坏情况下),每个操作具有平均性能。掌握了平摊分析主要有三种方法,聚集分析、记账方法、势能方法。掌握了平摊分析的方法以后,我们就可以利用他来分析一些优先队列。
2014-07-12 22:05:25
2447
原创 算法导论——lec 11 动态规划及应用
和分治法一样,动态规划也是通过组合子问题的解而解决整个问题的。分治法是指将问题划分为一个一个独立的子问题,递归地求解各个子问题然后合并子问题的解而得到原问题的解。与此不同,动态规划适用于子问题不是相互独立的情况,即各个子问题包含公共的子子问题。在这种情况下,如果用分治法会多做许多不必要的工作,重复求解相同的子子问题。而动态规划将每个子问题的解求解的结果放在一张表中,避免了重复求解。
2014-07-11 13:54:50
1397
原创 算法导论——lec 10 图的基本算法及应用
搜索一个图是有序地沿着图的边访问所有定点, 图的搜索算法可以使我们发现很多图的结构信息, 图的搜索技术是图算法邻域的核心。e
2014-07-08 23:42:48
1932
原创 LeetCode——01 Two Sum
Two Sum Total Accepted: 23868 Total Submissions: 130908My SubmissionsGiven an array of integers, find two numbers such that they add up to a specific target number.The function twoSum
2014-07-06 22:27:35
608
原创 算法导论——lec 08 线性时间排序
之前我们介绍了几种O(nlgn)的排序算法:快速排序、合并排序和堆排序,本节我们介绍基于比较的排序算法的下界以及几个线性时间的排序算法——计数排序、基数排序、桶排序。
2014-07-06 17:25:18
986
原创 算法导论——lec 07 快速排序
一、 快速排序的描述1、 快速排序是一种原地排序的算法,最坏情况下的时间复杂度为Θ(n^2),期望的运行时间为Θ(n logn),且其中隐含的常数因子较小。2、 快速排序分三个步骤:分解:数组A[p...r]被划分成两个数组A[p...q-1]和A[q+1...r],使得A[p...q-1]中的元素都小于等于A[q],A[q+1...r]中的元素都大于等于A[q]。下标q在这个划分过程
2014-07-06 15:33:34
1209
原创 算法导论——lec 06 堆排序
堆数据结构是一种数组对象,它可以被视为一颗完全二叉树,树中每个节点和数组中存放该节点值的那个元 素对应。如果表示堆的数组为A,那么树的根为A[1]。一、 堆1. 表示堆的数组A是一个具有两个属性的对象:length(A)是数组中的元素个数,heap-size(A)是存放在A中的堆的元素个数;A[heap-size(A)]之后的元素都不属于相应的堆。也就是:Heap-size(A)。2.
2014-07-06 14:30:53
768
原创 算法导论——lec 02
算法入门一、 插入排序1. 插入排序伪代码:int insertionSort(int *A, int n){ for(int i = 2; i <= n; i++){ int tmp = A[i]; for(int j = i-1; j > 0; j--) if(A[j] > tmp) A[j+1] = A[j]; else{ A[j+1]
2014-07-03 17:58:07
687
原创 机器学习——支持向量机support vector machine
支持向量机是与统计机器理论相关的机器学习算法,在1992年首次引入。SVM之所以流行,源于其对手写数字识别的错误率达到1.1%,与一个精确构建的神经网络的错误率相当。SVM现在被认为是kernel methods里面的一个经典例子。
2014-06-30 19:24:28
1297
原创 C++ primer笔记——第五章 表达式
1、 C++提供了丰富的操作符,定了了操作数为内置类型时操作符的含义。此外,C++还支持操作符重载,允许自定义用于类类型时操作符的含义。2、 对于含有操作符的表达式,其值通过对操作数做制定操作而获得。除了特殊的用法外,表达式的结果是右值,可以读取,但不允许对其进行赋值。3、 操作符的含义:该操作符执行什么类型的操作以及操作结果的类型——取决于操作数的类型。4、 C++一元操作符和二元操作符、三
2014-03-31 15:16:51
949
原创 C++ primer笔记——第一章 快速入门
1、 main函数是唯一被操作系统显示调用的函数。2、函数的四个元素:返回类型、函数名、形参表、函数体。3、返回值类型必须和函数的返回类型相同,或者可以转换为函数的返回类型。4、大多数系统中,main函数返回值是一个状态指示器。返回0表示main函数成功执行完毕,返回其他非零值有操作系统定义的含义。5、GNU编译器:g++ prog.cpp -o prog 微软编
2014-03-18 08:41:06
920
原创 Java编程思想——ch02 一切都是对象
”如果我们说另一种不同的语言,那么我们就会发掘一个有些不同的世界“——Luduing WittgersteinJava不像C++那么复杂,Java假设我们只进行面向对象的程序设计。1、 用引用操作对象1)、 在java中一切都被视为对象,尽管一切都是对象,但操作的标示符实际上是对象的一个引用。2)、 引用不一定非得和对象相关联,引用可以独立于对象而存在。3)、 一种
2014-01-09 21:43:09
727
原创 Java编程思想——ch01 对象导论
1、 抽象过程1)、OOP根据问题来描述问题。2)、samlltalk:万物皆为对象;程序是对象的集合,通过发送消息告知彼此要做的;每个对象都有自己的由其他对象构成的存储;每个对象都有其类型;每一特定类型的所有对象都可以接受同样的消息。3)、对象具有状态、行为和标识。2、每个对象都有一个接口1)、类描述了具有相同特性和行为的对象集合,一个类实际上是一个数据类型。2)、面向对
2014-01-08 21:01:34
747
原创 数据结构——栈和队列
栈和队列是两种重要的线性结构,可以视作操作受限的线性表。一、 栈定义: 栈是限定仅在表尾进行插入和删除操作的线性表。表尾端称为栈顶,表头端称为栈底。特点:后进先出。LIFO栈的顺序存储表示:typedef struct{ SElemType *base; SElemType *top; int stacksize;}SqStack;初始化栈:St
2014-01-06 21:14:04
706
原创 一道沙漏面试题
前几天听室友说起一道面试题:一个7分钟和一个4分钟的沙漏,如何获得9分钟的时长?这个题目似曾相识,仔细想想,似乎可以这么来做:先把7分钟和4分钟的沙漏同时开始计时,到4分钟的沙漏计时完毕,7分钟的沙漏中还剩下3分钟,此时,立即把4分钟的沙漏倒转过来重新开始计时,与此同时,要求的9分钟的计时也开始。3分钟之后,7分钟的沙漏计时完毕,4分钟的沙漏也已经记了3分钟,此时将4分钟和
2014-01-06 13:48:37
1518
原创 回归模型——线性回归
线性回归是回归模型中最简单的一种。 最近在做一个预测指数的项目,整理输入数据之后,用线性回归模型试了一下,总体上效果一般般。一、 回归模型输入: 其中N为特征的维数。每一维特征对应一个basis function,记为权值:假设预测目标是输入特征向量的基函数的线性组合,则 假设预测值y与实际值h之间的噪声 服从高斯分布:
2013-12-31 11:27:46
1175
转载 中国最美的十首情诗
一、《君生我未生,我生君已老》君生我未生,我生君已老。 君恨我生迟,我恨君生早。君生我未生,我生君已老。 恨不生同时,日日与君好。我生君未生,君生我已老。 我离君天涯,君隔我海角。我生君未生,君生我已老。 化蝶去寻花,夜夜栖芳草。 二、《卜算子》 李之仪我住长江头,君住长江尾。 日日思君不见君,共饮长江水。此水几时休,此恨何
2013-12-30 23:46:33
2213
原创 线性表的一个算法题
题目如下:已知线性表(a1 a2 a3 …an)按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部正数值(假设0为正数)元素前边的算法:例:(x,-x,-x,x,x,-x …x)变为(-x,-x,-x…x,x,x)。 由于题目不是太明确,移动的时候是否要保持正负数原来的相对顺序,姑且认为无需保持原来的相对顺序。一、 暴力的方法:从左到
2013-12-30 21:18:21
7068
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人