![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 72
阳光可乐
live for coding
展开
-
LeetCode:Max Points on a Line
这是LeetCode上的一道题,题目如下:Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.看到这道题目,首先想到判断点是否在直线上,我们会想到依靠斜率是否相等来判断。但是还存在一个问题,比如有四个点A(x1,y1),B(x2,y2),原创 2014-02-24 21:05:33 · 2394 阅读 · 2 评论 -
全排列的编码与解码——康托展开 (附完整代码)
一、康托展开:全排列到一个自然数的双射X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0!ai为整数,并且0 适用范围:没有重复元素的全排列二、全排列的编码:{1,2,3,4,...,n}的排列总共有n!种,将它们从小到大排序,怎样知道其中一种排列是有序序列中的第几个?如 {1,2,3转载 2014-08-12 20:40:23 · 844 阅读 · 0 评论 -
leetcode:Word Break
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.For example, givens = "leetcode",dict = ["leet"原创 2014-04-10 23:27:38 · 1019 阅读 · 0 评论 -
递归算法空间的缩减方法与尾递归
最近太忙,但是感觉有很多要写的东西,先列题目出来原创 2014-04-06 22:21:21 · 995 阅读 · 0 评论 -
寻找丑数(ugly number)
【问题】我们把把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。【分析】很自然的我们可以想到使用暴力解法,把1500个丑数从众多数中找出来,如何找出来呢?我们就要判断这个数是否只包含2,3,5这三个因子,我们就将这几个因子全都消除,这样最后如果为丑数,原创 2014-03-11 15:06:38 · 807 阅读 · 0 评论 -
关于数组的几道面试题
今天看到一个总结的非常好的博客,现转载过来,原文地址:http://www.cnblogs.com/graphics/archive/2010/08/24/1761620.html2011年2月15日更新,加入找出绝对值最小的元素一题数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论。目前有以下18道题目,如果转载 2014-03-10 21:23:35 · 780 阅读 · 0 评论 -
归并排序(数组和链表)
昨天写了个链表的快速排序算法,刚好leetcode上面也有这道题,于是乎提交,发现测试用例中有一个很大的测试用例出现了Limited time exceeded错误,于是乎发现解法不对,毕竟快排是一个平均时间复杂度O(nlogn),但是最坏情况下O(n^2)的排序算法,看到网上有人说应该使用归并排序,其时间复杂度为O(nlogn),一下子反应不过来,故先复习下归并排序。其实归并排序也是属于分治原创 2014-03-02 11:41:59 · 1147 阅读 · 0 评论 -
单链表排序之快排
【问题】给定一个无头节点单链表,对链表使用快排进行排序【分析】对于单链表来书,比较适宜的排序方法有选择排序、插入排序、冒泡排序等方法,不过既然题目要求我们使用快排,那么就想如何使用快排解决这个问题。首先,快排的思想是分治,即选择一个基准数据,将数据分成两部分,然后分别对两部分再进行排序。那么,我们就要想如何将链表分成两部分,对于数组使用快排而言,我们可以定义首位指针进行移动,并且可原创 2014-03-01 16:46:47 · 1414 阅读 · 0 评论 -
最大公约数求解,GCD算法的通俗解释
有a,b两个数,要求写程序求解a,b两数的最大公约数,其实最简单的方法就是从2向上累加,找到最大的能够整除这两个数的那个数,但是这个暴力解法可能复杂度太高了,因此有人发明了使用辗转相除法求解两数的最大公约数,假设a>b,大致的过程就是先用a/b,然后令c=a-a/b*b,如果c=0,则b为最大公约数,否则,就递归的计算b和c的最大公约数,程序如下:int gcd(int a,int b){原创 2014-01-08 09:28:05 · 1224 阅读 · 0 评论 -
乾坤大挪移:链表向右旋转n位
【问题】给定一个单向链表,设计一个算法实现链表向右旋转K个位置。K是非负的整数。这题看起来简单,可真编程实现有陷阱啰。 举例: 给定:1->2->3->4->5->6->null 并且K=3, 则有:4->5->6->1->2->3->null。【分析】这个题目其实并不难,主要是需要处理特殊情况:1.链表长度为02.K>链表的长度3.K=0在处理的时候,首先我们应该原创 2014-02-27 19:29:59 · 1212 阅读 · 0 评论 -
蓄水池抽样算法
【问题】随机抽样问题表示如下:要求从N个元素中随机的抽取k个元素,其中N无法确定。这种应用的场景一般是数据流的情况下,由于数据只能被读取一次,而且数据量很大,并不能全部保存,因此数据量N是无法在抽样开始时确定的;但又要保持随机性,于是有了这个问题。所以搜索网站有时候会问这样的问题。这里的核心问题就是“随机”,怎么才能是随机的抽取元素呢?我们设想,买彩票的时候,由于所有彩票的中奖概率转载 2014-02-26 15:03:29 · 1584 阅读 · 0 评论 -
Magic Index 求解
问题如下:给定一个数组A,其中有一个位置被称为Magic Index,含义是:如果i是Magic Index,则A[i] = i。假设A中的元素递增有序、且不重复,请给出方法,找到这个Magic Index。更进一步,当A中允许有重复的元素,该怎么办呢?看到这个问题,我第一反应遍历一遍不就可以解决了吗?算法复杂度O(n),但是一想,这么简单的题应该还有陷阱,我们发现题目原创 2014-02-25 14:30:34 · 949 阅读 · 0 评论 -
排列组合解法
最近做题遇到了排列组合的题,发现以原创 2014-08-12 21:44:42 · 926 阅读 · 0 评论