DS/Algorithms
清新哥哥
暴走牛牛
展开
-
字符处理
/*具体规则如下:1. 把每个单词的首字母变为大写。2. 把数字与字母之间用下划线字符(_)分开,使得更清晰3. 把单词中间有多个空格的调整为1个空格。例如:用户输入:mutua4lly orthog6onal basis fu12nctions则程序输出:Mutua_4_lly Orthog_6_onal Basis原创 2017-08-25 20:35:20 · 806 阅读 · 0 评论 -
5位黑洞数
/*任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。比如,刚才的数字会落入:[82962,75933, 63954, 61974]这个循环圈。请编写程序,找到5位数所有可能原创 2018-01-10 00:08:51 · 4354 阅读 · 0 评论 -
奶牛繁殖问题
/*张教授采用基因干预技术成功培养出一头母牛,三年后,这头母牛每年会生出1头母牛,生出来的母牛三年后,又可以每年生出一头母牛。如此循环下去,请问张教授n年后有多少头母牛?*/-------------------------------------------------------------------------------------------------------------原创 2018-01-10 10:53:05 · 2369 阅读 · 0 评论 -
平面最近距离
/*最近距离已知平面上的若干点的位置,现在需要计算所有这些点中,距离最近的两个点间的最小距离。*/--------------------------------------------------------------------------------------------------class Mypoint{private double x;private do原创 2018-01-10 12:59:05 · 1676 阅读 · 0 评论 -
孪生素数
/*所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,就象孪生兄弟一样。最小的孪生素数是 (3, 5),在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31),(41, 43), (59, 61) 和 (71, 73),总计有 8 组。但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越原创 2018-01-10 13:58:18 · 4484 阅读 · 0 评论 -
快乐数
for details: 快乐数定义快乐数有以下的特性:在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1。例如,以十进制为例:2 8 → 22+82=68 → 62+82=100 → 12+02+02=13 2 → 32+22=13 → 12+32=10 → 12+02=13 7 → 32+72=58 → 5...原创 2018-04-07 21:00:22 · 2034 阅读 · 0 评论 -
删除链表的元素
Q:移除链表中值为val的元素,返回新的链表for example:Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6Return: 1 --> 2 --> 3 --> 4 --> 5 public ListNode removeElements(ListNode head, int val) {原创 2018-04-07 21:44:36 · 1557 阅读 · 0 评论 -
同构字符串
对于两个字符串,参考下例子:For example,Given "egg", "add", return true.Given "foo", "bar", return false.Given "paper", "title", return true思路:String 1: A B E A C D Bindex pa原创 2018-04-08 17:19:40 · 1742 阅读 · 0 评论 -
字符串中各个字母出现的个数
eg:"sdfgzxcvasdfxcvdf"获取该字符串中的字母出现的次数。希望打印结果:a(1)c(2)..... ---------------------------------------------code---------------------------------------------------------------------thinking:通过结果...原创 2017-09-05 22:58:24 · 2302 阅读 · 0 评论 -
刷题网站总结
一些算法刷题的网站 1. leetcode http://leetcode.com/ 2. careerup http://www.careercup.com/http://hawstein.com/posts/ctci-solutions-contents.html 3. glassdoorhttp://www.glassdoor.com/index.ht...原创 2018-07-30 13:30:47 · 3510 阅读 · 0 评论 -
最短路径问题---Dijkstra算法详解
转载自:https://blog.csdn.net/qq_35644234/article/details/608707191、最短路径问题介绍问题解释: 从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径解决问题的算法:迪杰斯特拉算法(Dijkstra算法) 弗洛伊德算法(Floyd算法) SPFA算法这篇博客,我们就对Dijkstra算...转载 2018-08-07 15:43:20 · 2039 阅读 · 0 评论 -
面试中二叉树知识总结
https://blog.csdn.net/v_JULY_v/article/details/6530142(从B树、B+树、B*树谈到R 树)https://subetter.com/articles/2018/04/various-operations-of-the-binary-tree.html(二叉树的各自操作)https://subetter.com/articles/2...原创 2018-08-07 15:59:54 · 2148 阅读 · 0 评论 -
统计qq一天中每秒在线人数
【问题】为了统计一天内QQ每秒的在线用户数量,每次一个用户下线时会生成一条记录到文件里:记录里有三个字段(上线时间,下线时间,用户名),时间以秒为单位。现在有一个文件包含了当天生成的N条记录(N很大),请设计一个算法根据N条记录统计出当天每秒在线用户的数量。(0<=上线时间& lt;下线时间<=24*3600)【思路】创建一个数组change[ 24*3600 ]用来记录一...转载 2018-08-30 23:24:52 · 11723 阅读 · 0 评论 -
快速的判断一个数N的二进制中有多少个1
方法1:这里涉及一个&的知识点,&是按位与,就是在一位一位的做与运算, while(n>0) //这一句,当n不等于0的时候循环执行以下循环体,n等于0的变化条件在n>>=1这一句,将n左移一位,这样当n中所有的”1”位都移出时,就跳出循环了 { if((n&1)==1) //这句逐个通过位与的方式查看当前...原创 2018-08-31 11:29:17 · 6067 阅读 · 0 评论 -
将单向链表按某值划分成左边小、中间相等、右边大的形式
【题目】 给定一个单向链表的头节点head,节点的值类型是整型,再给定一个整 数pivot。实现一个调整链表的函数,将链表调整为左部分都是值小于 pivot的节点,中间部分都是值等于pivot的节点,右部分都是值大于 pivot的节点。 除这个要求外,对调整后的节点顺序没有更多的要求。 例如:链表9->0->4->5-1,pivot=3。 调整后链表可以是 1->0-&...原创 2018-09-04 16:01:52 · 1158 阅读 · 0 评论 -
迷宫问题
/*迷宫问题对于走迷宫,人们提出过很多计算机上的解法。深度优先搜索、广度优先搜索是使用最广的方法。生活中,人们更愿意使用“紧贴墙壁,靠右行走”的简单规则。下面的代码则采用了另一种不同的解法。它把走迷宫的过程比做“染色过程”。假设入口点被染为红色,它的颜色会“传染”给与它相邻的可走的单元。这个过程不断进行下去,如果最终出口点被染色,则迷宫有解。*/----------------原创 2018-01-09 23:13:02 · 1596 阅读 · 0 评论 -
制作表格
/*在中文Windows环境下,控制台窗口中也可以用特殊符号拼出漂亮的表格来。比如: ┌─┬─┐│││├─┼─┤│││└─┴─┘ 其实,它是由如下的符号拼接的:左上 = ┌上 = ┬右上 = ┐左 = ├中心 = ┼右 = ┤左下= └下 = ┴右下 = ┘垂直 = │水平 = ─本题目要求编写一个程原创 2018-01-07 22:24:51 · 1697 阅读 · 0 评论 -
账目金额错误问题
/*某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某1笔或几笔。如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗?如果有多种可能,则输出所有可能的情况。我们规定:用户输入的第一行是:有错的总金额。接下来是一个整数n,表示下面将要输入的明细账目的条数。再接下来是n行整数,分别表示每笔账目的金额。要求程序输出:所有可能漏掉的金额组合。每个情况1行。金额按照从原创 2018-01-05 13:09:55 · 1818 阅读 · 0 评论 -
字母字符全排列
如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 A、B、C、D四个不同的字符,则结果为:ABDCACBDACDBADBCADCBBACDBADCBCADBCDABDACBDCACABDCADBCBADCBDACDABCDBADABCDACBDBACDBCADCABDCBA一共原创 2017-08-25 18:31:40 · 873 阅读 · 0 评论 -
猜算式
/*看下面的算式:□□ x □□ = □□ x □□□它表示:两个两位数相乘等于一个两位数乘以一个三位数。如果没有限定条件,这样的例子很多。但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。该算式中1至9的每个数字出现且只出现一次!比如:46 x 79 = 23 x 15854 x 69 = 27 x 13854 x 93 = 27 x 186..原创 2017-08-26 10:39:16 · 1142 阅读 · 0 评论 -
Excel地址转换
/*看下面的规则:Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。【输入、输出格原创 2017-08-26 13:49:54 · 1996 阅读 · 0 评论 -
手机尾号评分
/*看下面的规则:根据给定的手机尾号(4位),按照一定的规则来打分。其规则如下:1. 如果出现连号,不管升序还是降序,都加5分。例如:5678,4321都满足加分标准。2. 前三个数字相同,或后三个数字相同,都加3分。例如:4888,6665,7777都满足加分的标准。注意:7777因为满足这条标准两次,所以这条规则给它加了6分。3. 符合AABB或者ABAB模式的加1分。例如原创 2017-08-26 15:39:26 · 18161 阅读 · 0 评论 -
括号匹配问题
用于判断一个串中的括号是否匹配所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉。例如:..(..[..]..).. 是允许的..(...[...)....]....是禁止的 //用栈的知识---------------------------------code----------------------------------------impor原创 2017-08-26 16:30:06 · 1308 阅读 · 0 评论 -
扑克牌排列
/*看下面的规则: * 下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。操作过程是:手里拿着这套扑克牌,从前面拿一张放在后面,再从前面拿一张放桌子上,再从前面拿一张放在后面,....如此循环操作,直到剩下最后一张牌也放在桌子上。下面代码的目的就是为了求出最后桌上的牌的顺序。初始的排列如果是A,2,3...K,则最后桌上的顺序为:[2, 4, 6,原创 2017-08-26 18:09:06 · 1629 阅读 · 0 评论 -
纵横放火柴游戏
这是一个纵横火柴棒游戏。如图,在3x4的格子中,游戏的双方轮流放置火柴棒。其规则是:1. 不能放置在已经放置火柴棒的地方(即只能在空格中放置)。2. 火柴棒的方向只能是竖直或水平放置。3. 火柴棒不能与其它格子中的火柴“连通”。所谓连通是指两根火柴棒可以连成一条直线,且中间没有其它不同方向的火柴“阻拦”。例如:图[1.jpg]所示的局面下,可以在C2位置竖直放置(为了方便描述格原创 2017-08-27 17:04:15 · 1735 阅读 · 0 评论 -
猜算式2
/*看下面的规则:☆☆☆ + ☆☆☆ = ☆☆☆如果每个五角星代表 1 ~ 9 的不同的数字。这个算式有多少种可能的正确填写方法?173 + 286 = 459295 + 173 = 468173 + 295 = 468183 + 492 = 675以上都是正确的填写法!注意:111 + 222 = 333 是错误的填写法!因为每个数字必须是不同的!原创 2017-08-27 10:27:25 · 1973 阅读 · 0 评论 -
古代棋局
规则:桌子上放六个匣子,编号是1至6。多位参与者(以下称玩家)可以把任意数量的钱押在某个编号的匣子上。所有玩家都下注后,庄家同时掷出3个骰子(骰子上的数字都是1至6)。输赢规则如下:1. 若某一个骰子上的数字与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目赔付(即1比1的赔率)。2. 若有两个骰子上的数字与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注原创 2017-08-27 20:47:35 · 1662 阅读 · 0 评论 -
java代码转HTML(源码转换)
/*为了源文件能正常显示,我们必须为文本加上适当的标签。对特殊的符号进行转义处理。常用的有:HTML 需要转义的实体:& --->&空格 ---> > --->>" ---> "此外,根据源码的特点,可以把 TAB 转为4个空格来显示。TAB ---> 为了原创 2017-08-27 21:51:52 · 6212 阅读 · 0 评论 -
子串提取
/*串“abcba”以字母“c”为中心左右对称;串“abba”是另一种模式的左右对称。这两种情况我们都称这个串是镜像串。特别地,只含有1个字母的串,可以看成是第一种模式的镜像串。一个串可以含有许多镜像子串。我们的目标是求一个串的最大镜像子串(最长的镜像子串),如果有多个最大镜像子串,对称中心靠左的优先选中。例如:“abcdeefghhgfeiieje444k444lmn”的最大镜像原创 2017-08-28 10:46:38 · 1735 阅读 · 0 评论 -
取球博弈
case 1:今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。我们约定:每个人从盒子中取出的球的数目必须是:1,3,7或者8个。轮到某一方取球时不能弃权!A先取球,然后双方交替取球,直到取完。被迫拿到最后一个球的一方为负方(输方)请编程确定出在双方都不判断失误的情况下原创 2017-08-28 15:23:26 · 1760 阅读 · 0 评论 -
密码翻译器
规则:/*这个程序的任务就是把一串拼音字母转换为6位数字(密码)。我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。变换的过程如下:第一步. 把字符串6个一组折叠起来,比如wangximing则变为: wangximing第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:原创 2017-08-28 18:49:04 · 14597 阅读 · 0 评论 -
微生物增值
/*假设有两种微生物 X 和 YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。如果X=10,Y=90 呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。*/------------------原创 2017-08-31 19:56:15 · 1793 阅读 · 0 评论 -
日期间的间隔天数
/*从键盘输入一个日期,格式为yyyy-M-d要求计算该日期与1949年10月1日距离多少天例如:用户输入了:1949-10-2程序输出:1用户输入了:2017-8-31程序输出:24806*/-------------------------------------------code------------------------------------------原创 2017-08-31 21:06:22 · 2822 阅读 · 0 评论 -
顺时针螺旋填入数字
从键盘输入一个整数(1~20)则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:输入数字2,则程序输出:1 24 3输入数字3,则程序输出:1 2 38 9 47 6 5输入数字4,则程序输出:1 2 3 412 13 14 511 16 15 610 9 8 7-----原创 2017-08-31 21:40:59 · 4006 阅读 · 0 评论