随笔分类 -  Some algorithms

各种解题遇到的记录~
摘要:leetcode 258 Add Digits 题目翻译: 给出一个非负整数num,不断地把它所有数字相加,直到最后剩下一个数字。 例如:num=38,计算过程如,3+8=11,1+1=2,所以2就是最后的数字,返回它就可以了。 并且,你能不使用任何循环或者递归,在O(1)的复杂度内完成吗? 解题思 阅读全文
posted @ 2016-01-10 20:50 leolfw 阅读(110) 评论(0) 推荐(0)
摘要:leetcode 292 Nim Game 题目翻译: 你正在和你朋友在玩Nim Game的游戏:桌子上有一堆石头,每次你们其中一个人只能取走1到3块石头,最后谁取走剩下石头的将会胜出。第一次将由你来先取石头。 你们两个都很聪明,都会采取最佳游戏策略。根据石头堆得数目,写一个函数求出谁最后胜出。 例 阅读全文
posted @ 2016-01-10 11:15 leolfw 阅读(246) 评论(0) 推荐(0)
摘要:这题用到的是动态规划算法。主要的思想和分治法有点像,将大大的问题分解成底层的小问题,动态规划就是把问题从最小的单元开始,逐渐增加问题规模,每次后面的结果都与前面相关。我咬字不清,下面就结合这个题目来讲解吧。 问题输入的是一串数字1~26(A~Z),求解可以形成多少种字符串。我们首先不要拿一大窜... 阅读全文
posted @ 2012-06-30 10:55 leolfw 阅读(329) 评论(0) 推荐(0)
摘要:这道题目考查的是基本的排序算法的选择和使用,都说到是算法的选择了,当然对时间有一定的要求。本博主尝试了基本常见算法,如时间复杂度是O(n*n)的冒泡算法,插入算法,选择算法都是不能通过的。那么就要选择时间复杂度更优的算法了,粗略想了一下,就快排和堆排序比较熟悉,于是就采用这种算法编写程序,最后都通过了。 快排和堆排序(优先队列)都有现成的类来调用,分别是和,实现起来相当方便。 用快排实现如下: 1 // Problem#: 4923 2 // Submission#: 1435620 3 // The source code is licensed under Creative Com... 阅读全文
posted @ 2012-06-12 18:12 leolfw 阅读(525) 评论(0) 推荐(0)