
算法
文章平均质量分 76
twlkyao
AlienTech for better life
展开
-
位图像素的颜色——杭电携程编程大赛 (预赛第二场)
AlienTech for better life!~原创 2014-04-11 21:40:00 · 2708 阅读 · 0 评论 -
C/C++ 排序之一(冒泡排序、选择排序、交换排序)
冒泡排序、选择排序、交换排序1、冒泡排序bubble_sort[cpp] view plaincopy#include void bubble_sort(int *begin, int *end) { int *i, *j; for(i = end; i >= begin; i --)转载 2013-08-22 10:02:02 · 1266 阅读 · 0 评论 -
各种排序算法的稳定性和时间复杂度小结
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n转载 2013-08-21 19:47:02 · 1001 阅读 · 0 评论 -
求连续子数组最大和
问题输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如输入的数组为-2,11,-4,13,-5,-2 和最大的子数组为11,-4,13因此输出为该子数组的和20。解析:本题解法多种多样,时间复杂度可以为:O(n^3),O(n^2),O(nlogn),O(n);转载 2013-06-25 16:22:15 · 1269 阅读 · 0 评论 -
数值的整数次方
前奏在写这个问题时,先说一下对于我们写程序时,应该考虑的问题。代码的规范程度 代码的书写规范程度会影响面试考官阅读代码的兴致,从下图可看出,书写、布局和命名规则都决定着代码的规范性。 首先,规范的代码书写清晰。绝大部分面试都要求应聘者在白纸或者白板上书写。不要因为担心没时间写代码就在纸上写潦草或者简略。通常面试代码量不会超过50行,所以关键是在写代码转载 2013-06-24 15:50:35 · 819 阅读 · 0 评论 -
打印1到最大的n位数
题目:输入数字n,按顺序打印出1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。方法1[cpp] view plaincopyprint?//利用case语句使字符++ char CharPlus(char a) { char b; switch ( a )转载 2013-06-24 15:50:16 · 859 阅读 · 0 评论 -
二进制数中1的个数
题目: 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如9(1001),有2个1。因此如果输入9,则该函数输出2。普通法思路:除2看看余数是不是1,最多循环32次这种方法。[cpp] view plaincopyprint?int Count1(int v) { int num = 0;转载 2013-06-24 14:00:48 · 784 阅读 · 0 评论 -
各种排序算法C++模版类实现
闲来无事,于是把常用的排序算法自己写了一遍,也当做是复习一下。[cpp] view plaincopyprint?/*************************************************************** *转载 2013-06-23 23:50:26 · 803 阅读 · 0 评论 -
【100题】第六十六~第七十题(颠倒栈、扑克牌顺子和掷骰子概率、数字数组排成最小数、求旋转数组中最小值、全排列)
一,颠倒栈。1)题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。2)分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一pop出来,放到一个数组里,然后在数组里颠倒所有元素,最后把数组中的所有元素逐一push进入栈。这时栈也就颠倒过来了。颠倒一个数组是一件很容易的事情。不过这种思路需要显示分配一转载 2013-06-23 23:25:50 · 1491 阅读 · 0 评论 -
2013年6月九度Online Judge程序猿求职及面试月赛 - 题目3:把数组排成最小的数
题目3:把数组排成最小的数时间限制:1 秒内存限制:128 兆特殊判题:否提交:145解决:31题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。输入:输入可能包含原创 2013-06-23 23:16:42 · 1375 阅读 · 0 评论 -
2013年6月九度Online Judge程序猿求职及面试月赛 - 题目1:二进制中1的个数
题目1:二进制中1的个数时间限制:1 秒内存限制:128 兆特殊判题:否提交:201解决:48题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整原创 2013-06-23 22:26:36 · 989 阅读 · 0 评论 -
华为机试
1~9的拼音是yi,er,san,......jiu在一个字符串中把1~9的拼音翻译成阿拉伯数字[cpp] view plaincopy//vs2005 #include "stdafx.h" #include #include using namespace std; void fi转载 2013-06-16 10:25:21 · 980 阅读 · 0 评论 -
单链表基本操作
[cpp] view plaincopy//vs2005 #include "stdafx.h" #include typedef struct node { int data; struct node *next; }LNode,*LinkList; /*创建链表:创建一个有转载 2013-06-16 09:32:26 · 952 阅读 · 0 评论 -
Android MD5校验码的生成与算法实现
在Java中,java.security.MessageDigest (rt.jar中)已经定义了 MD5 的计算,所以我们只需要简单地调用即可得到 MD5 的128 位整数。然后将此 128 位计 16 个字节转换成 16 进制表示即可。 下面是一个可生成字符串或文件MD5校验码的例子,测试过,可当做工具类直接使用,其中最主要的是getMD5String(String转载 2013-05-03 23:26:33 · 1080 阅读 · 0 评论 -
MessageDigest的功能及用法
MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。 MessageDigest 对象开始被初始化。该对象通过使用 update()方法处理数据。任何时候都可以调用 reset()方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用digest() 方法之一转载 2013-05-04 22:53:06 · 1091 阅读 · 0 评论 -
剪刀石头布——杭电携程编程大赛 (预赛第二场)
AlienTech for better life!~原创 2014-04-11 21:48:17 · 2746 阅读 · 0 评论 -
寻找一个整数二进制表示中1的个数
AlienTech for better life!~原创 2014-04-14 20:14:47 · 2462 阅读 · 0 评论 -
认识Mahout下的云计算机器学习
Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序,并且,在 Mahout 的最近版本中还加入了对Apache Hadoop 的支持,使这些算法可以更高效的运行在云计算环境中。在Mahout实现的机器学习算法见下表:转载 2014-03-16 22:56:01 · 1697 阅读 · 0 评论 -
基于用户投票的排名算法(四):牛顿冷却定律
这个系列的前三篇,介绍了Hacker News,Reddit和Stack Overflow的排名算法。今天,讨论一个更一般的数学模型。这个系列的每篇文章,都是可以分开读的。但是,为了保证所有人都在同一页上,我再说一下,到目前为止,我们用不同方法,企图解决的都是同一个问题:根据用户的投票,决定最近一段时间内的"热文排名"。你可能会觉得,这是一个全新的课题,伴随着互联网而产转载 2014-02-24 18:37:15 · 1523 阅读 · 0 评论 -
基于用户投票的排名算法(三):Stack Overflow
上一篇文章,我介绍了Reddit的排名算法。它的特点是,用户可以投赞成票,也可以投反对票。也就是说,除了时间因素以外,只要考虑两个变量就够了。但是,还有一些特定用途的网站,必须考虑更多的因素。世界排名第一的程序员问答社区Stack Overflow,就是这样一个网站。你在上面提出各种关于编程的问题,等待别人回答。访问者可以对你的问题进行投票(赞成票或反对票),表示这转载 2014-02-24 18:36:19 · 1402 阅读 · 0 评论 -
基于用户投票的排名算法(二):Reddit
近或相等的文章,会排在后面;得到净反对票的文章,会排在最后(因为得分是负值)。(三)这种算法的一个问题是,对于那些有争议的文章(赞成票和反对票非常接近),它们不可能排到前列。假定同一时间有两个帖子发表,文章A有1张赞成票(发帖人投的)、0张反对票,文章B有1000张赞成票、1000张反对票,那么A的排名会高于B,这显然不合理。结论就是,Reddit的排名,基本上由发帖时间决转载 2014-02-24 18:30:43 · 1541 阅读 · 0 评论 -
基于用户投票的排名算法(一):Delicious和Hacker News
互联网的出现,意味着"信息大爆炸"。用户担心的,不再是信息太少,而是信息太多。如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。各种各样的排名算法,是目前过滤信息的主要手段之一。对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新。排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位。转载 2014-02-24 18:25:15 · 1575 阅读 · 0 评论 -
数据挖掘之KNN分类
分类算法有很多,贝叶斯、决策树、支持向量积、KNN等,神经网络也可以用于分类。这篇文章主要介绍一下KNN分类算法。1、介绍 KNN是k nearest neighbor 的简称,即k最邻近,就是找k个最近的实例投票决定新实例的类标。KNN是一种基于实例的学习算法,它不同于贝叶斯、决策树等算法,KNN不需要训练,当有新的实例出现时,直接在训练数据集中找k个最近的实例,把这个新的实例转载 2013-11-16 21:18:34 · 1610 阅读 · 0 评论 -
一个逻辑问题的分析:“天堂与地狱的守卫”
最近和朋友讨论一个逻辑问题,据说也是个以前出现过的面试题了。拿出来和大家分享。问题如下:你来到两道门口,一道是天堂之门, 一道是地狱之门 。门口都有一个守卫,只知道守卫一个只说假话,一个只说真话。现在你只有一次提问机会,只向一个守卫问一个问题,这个守卫对你的问题,只给出“是”或者”不是“的答案。(对于无法给出是非的问题,守卫会直接把你砍死。。。)请问怎么问才能准确进入天转载 2014-01-08 15:27:52 · 2115 阅读 · 0 评论 -
hdu 1018
很久没A题。。。原来学过的都忘了……很久以前的一个题,试着再A一遍也难了,物是人非啊……复习一下吧! Big NumberTime Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6291转载 2013-12-17 09:57:25 · 1177 阅读 · 0 评论 -
数据挖掘十大经典算法
算法数据挖掘classificationalgorithmgooglevector国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naiv转载 2013-12-29 19:19:19 · 1269 阅读 · 0 评论 -
25道常见算法面试题
Problem 1 : Is it a loop ? (判断链表是否有环?)Assume that wehave a head pointer to a link-list. Also assumethat we know the list is single-linked. Can you come up an algorithm to checkwhether this link转载 2013-12-15 09:09:44 · 1321 阅读 · 0 评论 -
寻找一个字符串中连续出现次数最多的子串
算法描述首先获得后缀数组,然后1.第一行第一个字符a,与第二行第一个字符b比较,不等,则2.第一行前两个字符ab,与第三行前两个字符cb比较,不等,则3.第一行前三个字符abc,与第四行前三个字符bcb比较,不等,则4.第一行前四个......上述过程就相当于在原始字符串中,第一趟,a与b比较,ab与cb比较,abc与bcb比较,abcb与cbca比较,abcbc与bc转载 2013-06-16 09:29:29 · 1126 阅读 · 0 评论 -
迪杰斯特拉算法
算法描述:一、A->B=6,A->C=3则A->C=3二、C->B=2,C->D=3,C->E=4则A->C->B=5。在这里还需要向上回溯一下,通过与A->B=6比较,5更小。下同三、B->D=5,则A->C->B->D=10但在第2步中,C->D=3,所以A->C->D=6更小四、D->E=2,D->F=3,则A->C->D->E=8但在第二步中C->E=4,所转载 2013-06-16 09:26:04 · 900 阅读 · 0 评论 -
应该掌握的一些算法
1.图论中最短路径问题:迪杰斯特拉算法2.约瑟夫问题3.求最大公约数时的——埃拉托瑟尼筛————————未完待续,例子后续补上—————————原创 2013-06-16 10:06:14 · 804 阅读 · 0 评论 -
2012年九月六号阿里巴巴面试
1、介绍一下你自己。2、介绍一下你认为做的最好的一个项目。3、请用五分钟的时间把你做的项目的流程图画一下。4、项目中你遇到的难点是什么?怎么解决的?5、项目中你认为那个技术是你最拿手的?6、介绍一下HTTP协议7、如何把一个大的日志文件哈希到不同的哈希表中,这些哈希表的存储格式是什么?8、linux网络编程,画一个c/s通信的流程9、转载 2013-05-05 14:04:35 · 1045 阅读 · 0 评论 -
2012九月3号阿里巴巴笔试题目
第一题、5亿个不重复的商品的ID(每一个商品的ID是64位),现在有一个存放了10亿个商品ID(商品的ID会有重复)的日志文件,请设计一种方法找出5亿个商品中没有出现在日志文件中的商品。假设所能使用的内存为2G。[html] view plaincopy2G的文件只能存放2.5亿的商品ID,因为5亿商品大小为5*10^8*8B=4G。可以考虑将5亿商转载 2013-05-05 14:03:01 · 1005 阅读 · 0 评论 -
Android SHA1加密实现
同前篇博文的MD5加密只要把加密文本转换为String就好了[java] view plaincopypackage com.tencent.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExceptio转载 2013-05-03 23:30:48 · 6514 阅读 · 0 评论 -
Android MD5加密算法
Android MD5加密算与J2SE平台一模一样,因为Android 平台支持 java.security.MessageDigest这个包。实际上与J2SE平台一模一样。算法签名:[java] view plaincopyString getMD5(String val) throws NoSuchAlgorithmException转载 2013-05-03 23:29:30 · 1114 阅读 · 0 评论 -
用Java实现RSA加密
java实现RSA加密流程分析: 1、甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。 2、甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。 3、乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。 通过转载 2013-05-02 16:19:45 · 1189 阅读 · 0 评论 -
程序员编程艺术:第七章、求连续子数组的最大和
作者:July。出处:http://blog.youkuaiyun.com/v_JULY_v 。前奏希望更多的人能和我一样,把本狂想曲系列中的任何一道面试题当做一道简单的编程题或一个实质性的问题来看待,在阅读本狂想曲系列的过程中,希望你能尽量暂时放下所有有关面试的一切包袱,潜心攻克每一道“编程题”,在解决编程题的过程中,好好享受编程带来的无限乐趣,与思考带来的无限激情。--By@Jul转载 2013-05-02 16:41:27 · 790 阅读 · 0 评论 -
Java DES加密解密详解
Java密码学结构设计遵循两个原则: (1)算法的独立性和可靠性。 (2)实现的独立性和相互作用性。 算法的独立性是通过定义密码服务类来获得。用户只需了解密码算法的概念,而不用去关心如何实现这些概念。实现的独立性和相互作用性通过密码服务提供器来实现。密码服务提供器是实现一个或多个密码服务的一个或多个程序包。软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用转载 2013-05-02 16:18:34 · 1570 阅读 · 0 评论 -
从矩阵左上角至右下角(无权值)问题
问题来源来自于Euler Project的第十五个题目,题目不复杂,但是可以有很多种思路和解法。此外,我宿舍一姐们面试刚好碰到此题。题目链接问题描述一个 M*N 的矩阵,从矩阵的左上角到矩阵的右下角,只能向右走或者向下走,有多少种解法?例如一个2*2的矩阵,有下面六种解法。问题解法假设矩阵有M行N列。1、数学解法使用排转载 2013-05-02 10:24:59 · 1301 阅读 · 1 评论 -
各种二分查找
二分查找给定一个有序(不降序)数组arr。1、求任意一个i使得arr[i]等于val,不存在则返回-12、求最小的i使得arr[i]等于val,不存在则返回-13、求最大的i使得arr[i]等于val,不存在则返回-14、求最大的i使得arr[i]小于val,不存在则返回-15、求最小的i使得arr[i]大于val,不存在则返回-1一个错误的转载 2013-05-02 10:32:51 · 781 阅读 · 0 评论 -
使用位运算实现乘法和乘方运算
1、使用位运算乘法。把一个乘数变为2进制后,使用位运算完成乘数的乘法。[cpp] view plaincopy/* * 输入:正整数k 和 正整数m * 输出:k*m */ __int64 km(__int64 k, __int64 m){ __int64 x = k; int w = (in转载 2013-05-02 10:31:16 · 2021 阅读 · 0 评论