数据结构与算法
kongkongkkk
桃李不言,下自成蹊。
展开
-
LeetCode 200. Number of Islands
Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may原创 2017-09-10 21:07:11 · 341 阅读 · 0 评论 -
剑指Offer——(35)数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。即输出P%1000000007原创 2017-07-20 14:53:25 · 217 阅读 · 0 评论 -
剑指Offer——(34)第一个只出现一次的字符位置
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置原创 2017-07-20 11:16:26 · 341 阅读 · 0 评论 -
剑指Offer——(29)最小的k个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。原创 2017-06-15 18:25:22 · 259 阅读 · 0 评论 -
剑指Offer——(32)把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。原创 2017-06-26 17:18:46 · 217 阅读 · 0 评论 -
八大排序算法总结
*好久都没看排序算法了。。。今天把以前的代码贴上来。。。方便今后随时复习→_→*原创 2017-07-13 11:24:54 · 613 阅读 · 0 评论 -
剑指Offer——(31)整数中1出现的次数(从1到n整数中1出现的次数)
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。原创 2017-06-21 15:41:40 · 288 阅读 · 0 评论 -
剑指Offer——(30)连续子数组的最大和
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的原创 2017-06-16 13:10:15 · 366 阅读 · 2 评论 -
剑指Offer——(27)字符串的排列
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。原创 2017-05-20 16:40:30 · 243 阅读 · 0 评论 -
剑指Offer——(26)二叉搜索树与双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。原创 2017-05-20 16:38:59 · 269 阅读 · 0 评论 -
剑指Offer——(25)复杂链表的复制
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)原创 2017-05-20 11:25:04 · 239 阅读 · 0 评论 -
剑指Offer——(22)从上往下打印二叉树&&层次遍历
从上往下打印出二叉树的每个节点,同层节点从左至右打印。原创 2017-05-10 11:26:24 · 296 阅读 · 0 评论 -
剑指Offer——(36)两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点。原创 2017-07-21 20:42:43 · 287 阅读 · 0 评论 -
剑指Offer——(33)丑数
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。原创 2017-07-18 12:12:43 · 204 阅读 · 0 评论 -
判断某个字符串是不是一个合法的IP地址
写一个算法判断某个字符串是不是一个合法的IP地址。原创 2017-08-31 18:50:34 · 6416 阅读 · 1 评论 -
求字符串中的最长不重复子串
给定一字符串只包含数字,请写一个算法,找出该字符串中的最长不重复子串(不重复是指子串中每一元素不同于子串中其他元素) 如:“120135435”最长不重复子串为 “201354”原创 2017-08-31 18:14:34 · 10314 阅读 · 0 评论 -
剑指Offer——(28)数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。原创 2017-05-22 09:04:54 · 282 阅读 · 0 评论 -
剑指Offer——(44)翻转单词顺序列
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?原创 2017-07-28 17:01:03 · 239 阅读 · 0 评论 -
剑指Offer——(38)二叉树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。原创 2017-07-24 12:06:47 · 241 阅读 · 0 评论 -
剑指Offer——(39)平衡二叉树
输入一棵二叉树,判断该二叉树是否是平衡二叉树。原创 2017-07-24 15:33:26 · 264 阅读 · 0 评论 -
剑指Offer——(40)数组中只出现一次的数字
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。原创 2017-07-25 14:51:36 · 237 阅读 · 0 评论 -
剑指Offer——(41)和为S的两个数字
入一个递增排序的数组和一个数字S,在数组中查找两个数,使得它们的和正好是S。如果有多对数字的和等于S,输出任意一对即可原创 2017-07-26 11:21:27 · 272 阅读 · 0 评论 -
剑指Offer——(42)和为S的连续正数序列
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?Good Luck!原创 2017-07-26 20:57:51 · 546 阅读 · 0 评论 -
剑指Offer——(43)左旋转字符串
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!原创 2017-07-28 15:26:40 · 242 阅读 · 0 评论 -
剑指Offer——(37)数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。原创 2017-07-22 14:18:29 · 192 阅读 · 0 评论 -
剑指Offer——(21)栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)原创 2017-05-09 13:13:45 · 304 阅读 · 0 评论 -
剑指Offer——(24)二叉树中和为某一值的路径
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。原创 2017-05-18 12:45:40 · 268 阅读 · 0 评论 -
剑指Offer——(10)矩形覆盖
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?原创 2017-05-04 16:17:35 · 210 阅读 · 0 评论 -
剑指Offer——(9)变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。原创 2017-05-04 15:56:16 · 198 阅读 · 0 评论 -
全排列问题算法分析与实现(递归、非递归)
若有数字集合{1,2,3},则其全排列为123、132、213、231、321、312。现给定字符数组,求其字符的全排列。实现了递归与非递归两种方法。原创 2017-05-11 14:41:04 · 1065 阅读 · 0 评论 -
整数划分问题算法分析与实现(递归)
把一个正整数n写成多个大于等于1且小于等于其本身的整数的和,则其中各加数所构成的集合为n的一个划分。 把一个正整数n写成为 n=m1+m2+…+mi。其中,mi为正整数,并且1≤mi≤n;{m1,m2,…,mi}为n的一个划分。 如{m1,m2,…,mi}果中的最大值不超过m,即max(m1,m2,…,mi)≤m,则称它属于n的一个m划分。原创 2017-05-12 09:53:06 · 899 阅读 · 0 评论 -
剑指Offer——(8)跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。原创 2017-05-04 14:24:06 · 228 阅读 · 0 评论 -
剑指Offer——(7)斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39原创 2017-05-04 12:03:32 · 200 阅读 · 0 评论 -
剑指Offer——(6)旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。原创 2017-05-03 22:38:13 · 536 阅读 · 0 评论 -
剑指Offer——(5)用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。原创 2017-05-03 22:24:36 · 384 阅读 · 0 评论 -
剑指Offer——(4)重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。原创 2017-05-03 10:03:35 · 305 阅读 · 0 评论 -
剑指Offer——(1)二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。原创 2017-04-27 19:32:51 · 255 阅读 · 0 评论 -
剑指Offer——(2)替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。在此字符串上完成替换,空间保证足够。原创 2017-05-02 20:51:17 · 238 阅读 · 0 评论 -
剑指Offer——(11)二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。原创 2017-05-04 17:10:59 · 220 阅读 · 0 评论 -
棋盘覆盖问题算法分析与实现(递归)
*昨天上传的代码,经过再次测试发现有问题,其中对边界、终止条件的判断都有错误。。。→_→,今天重新改正,对之前看过代码的童鞋表示sorry。。。(2017.5.13 16:24)*原创 2017-05-12 17:51:26 · 3575 阅读 · 2 评论