06 2017 档案

唯一的重复元素
摘要:1. 问题描述 数组a[n],1到n-1这n-1个数放在这个数组中,其中有一个数重复一次。写一个算法找出这个数来。 2. 方法与思路 2.1 累加和法 采用数学求和的方法,由于数组中只有一个数是重复的,且又是连续的,根据累加和原理,对数组求和然后减去1到n-1的和即为所求的重复数。 2.2 位图法 阅读全文

posted @ 2017-06-28 22:34 泡面小王子 阅读(215) 评论(0) 推荐(0)

奇偶数排序
摘要:输入一个整数数组,对其重新排序,将奇数放在数组前面,偶数放在后面。要求时间复杂度O(n), 空间复杂度O(1)。 解法一:一头一尾指针往中间扫描 阅读全文

posted @ 2017-06-21 23:19 泡面小王子 阅读(483) 评论(0) 推荐(0)

跳台阶问题
摘要:给定一个有N个台阶的楼梯,一个人从下到上开始跳台阶,这个人有两种跳的方式:一次跳一个台阶,一次跳两个台阶; 问:从台阶底端跳到台阶顶端,有多少种跳台阶的方式? 解法一:递归法 分析: 首先我们考虑最简单的情况。如果只有1个台阶,那么显然只有一种跳法;如果是2级台阶,那么有2种跳法。对于一个有n级台阶 阅读全文

posted @ 2017-06-21 19:25 泡面小王子 阅读(209) 评论(0) 推荐(0)

最大连续子数组和
摘要:给定k个整数的序列{N1,N2,...,Nk },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= k。最大连续子序列是所有连续子序中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{11,- 阅读全文

posted @ 2017-06-21 17:57 泡面小王子 阅读(219) 评论(0) 推荐(0)

寻找和为定值的若干个数
摘要:给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。 分析:此题相对于本节“寻找满足条件的多个数”如出一辙,不同的是此题只要求判断,不要求把所有可能的组合给输出来。因为此题需要考虑到加上a[i]和不加上a 阅读全文

posted @ 2017-06-21 17:03 泡面小王子 阅读(760) 评论(0) 推荐(0)

寻找和为定值的多个数
摘要:编程求解:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。 阅读全文

posted @ 2017-06-21 16:45 泡面小王子 阅读(197) 评论(0) 推荐(0)

寻找和为定值的两个数
摘要:1. 题目描述 给定一个数组(无序或者有序,两种情况都要考虑),找出和为M的两个数。最多时间复杂度能有多少? https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.02.md 2. 数 阅读全文

posted @ 2017-06-16 17:50 泡面小王子 阅读(443) 评论(0) 推荐(0)

八大排序算法之七—堆排序(Heap Sort)
摘要:堆排序是一种树形选择排序,是对直接选择排序的有效改进。 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于( 阅读全文

posted @ 2017-06-15 09:30 泡面小王子 阅读(544) 评论(0) 推荐(0)

寻找最小的K个数
摘要:寻找最小的K个数 题目描述:查找最小的K个数 题目:输入n个整数,输出其中最小的K个数 例如,输入1、2、3、4、5、6、7、8这8个数字,则最小的4个数字为1、2、3、4。 第一节、各种思路,各种选择 要求一个序列中最小的K个数,按照惯有的思维方式,很简单,先对这个序列从小到大排序,然后输出前面的 阅读全文

posted @ 2017-06-14 20:26 泡面小王子 阅读(462) 评论(1) 推荐(0)

strcpy和memcpy,memmove函数的区别
摘要:strcpy和memcpy的区别 strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 已知strcpy函数的原型是:char* strcpy(char* dest, c 阅读全文

posted @ 2017-06-13 08:38 泡面小王子 阅读(1605) 评论(0) 推荐(0)

最长重复子串
摘要:一个长度为10000的字符串,写一个算法,找出最长的重复子串,如abczzacbca,结果是bc。 提示:此题是后缀树/数组的典型应用,即是求后缀数组的height[]的最大值。 阅读全文

posted @ 2017-06-12 16:02 泡面小王子 阅读(174) 评论(0) 推荐(0)

最长连续字符
摘要:用递归算法写一个函数,求字符串最长连续字符的长度,比如aaaabbcc的长度为4,aabb的长度为2,ab的长度为1。 (下面递归的代码有问题) 非递归的实现代码: 阅读全文

posted @ 2017-06-12 11:13 泡面小王子 阅读(457) 评论(0) 推荐(0)

集合的差集
摘要:已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。链表结点的结构类型定义如下: 请完成函数 阅读全文

posted @ 2017-06-12 09:12 泡面小王子 阅读(1053) 评论(0) 推荐(0)

Eratosthenes筛选法
摘要:Sieve of Eratosthenes 筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5 阅读全文

posted @ 2017-06-11 15:13 泡面小王子 阅读(1004) 评论(0) 推荐(0)

字符串集合的合并
摘要:将多个集合合并成没有交集的集合。 给定一个字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaa bbb ccc ddd hhh},{eee ff 阅读全文

posted @ 2017-06-11 11:43 泡面小王子 阅读(2055) 评论(2) 推荐(0)

数据结构之并查集
摘要:1、概述 并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。 2、 基本操作 并查集是一种非常简单的数据结构,它主要涉及两个基本操作,分别为: A. 合并两个不相交集合 B. 判断两个元素是 阅读全文

posted @ 2017-06-10 10:26 泡面小王子 阅读(270) 评论(0) 推荐(0)

字符串集合的合并
摘要:给定一个字符串的集合,格式如下:{aaa bbb ccc}, {bbb ddd},{eee fff}, {ddd hhh}要求将其中交集不为空的集合合并,要求合并后的集合之间无交集,结果应该输出 {aaa ,bbb, ccc ,ddd, hhh} {eee, fff},{ggg}.(提示:这种不相交 阅读全文

posted @ 2017-06-10 10:02 泡面小王子 阅读(183) 评论(0) 推荐(0)

在字符串中删除特定的字符
摘要:【题目】 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 【例子】 输入”They are students.” 和”aeiou”则删除之后第一个字符串变成 Thy r stdnts。 要编程完成这道题要求的功能可能并不难。毕竟,这道题的基本思路就是在第一个字符串中拿到一个字符,在第二 阅读全文

posted @ 2017-06-08 17:26 泡面小王子 阅读(1466) 评论(0) 推荐(0)

第一个只出现一次的字符
摘要:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 方法一:从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符相比 阅读全文

posted @ 2017-06-08 10:12 泡面小王子 阅读(181) 评论(0) 推荐(0)

重复字符的压缩
摘要:对输入字符串进行压缩,输入"aaabcccdde",输出"3ab3c2de",即对连续出现的字符进行压缩。 解题思路:首先创建一个临时变量temp,给它赋值为第一个字符的值,从下一个字符开始遍历,如果等于temp,count++;如果不等于temp;则把此时temp出现的次数和temp存放在字符数组 阅读全文

posted @ 2017-06-06 20:19 泡面小王子 阅读(564) 评论(0) 推荐(0)

字符串空格的压缩
摘要:字符串空格的压缩:给定一个字符串,将其中连续出现的空格压缩为1个后,将其中已空格分隔的每个字符串逆序打印出来 解题思路是:第一步先压缩连续出现的空格;第二步实现以空格分隔的每个字符串逆序打印出来 再此,只讲一下第一步的操作:遍历字符串,遇到第一个空格,则给字符数组添加一个空格字符,此时如果后面仍有空 阅读全文

posted @ 2017-06-06 18:39 泡面小王子 阅读(1174) 评论(0) 推荐(0)

字符串的匹配
摘要:腾讯的一道面试题: 在一篇英文文章中查找指定的人名,人名使用二十六个英文字母(可以是大写或小写)、空格以及两个通配符组成(*、?),通配符“*”表示零个或多个任意字母,通配符“?”表示一个任意字母。 如:“J* Smi??” 可以匹配“John Smith” . 请用C语言实现如下函数: void 阅读全文

posted @ 2017-06-05 18:36 泡面小王子 阅读(268) 评论(0) 推荐(0)

字符个数统计
摘要:统计字符串中每个字符出现的次数 题目要求:写出一个函数,查找出每个字符出现的次数,主要区分大小写,要求时间复杂度是O(n)。 分析:用256个元素的数组count,来分别记录ASCII码为0~255的字符的个数,初始化为0,遍历每个字符,对该字符对应的数组元素的值加1。最后count[ i ]中存储 阅读全文

posted @ 2017-06-05 11:16 泡面小王子 阅读(282) 评论(0) 推荐(0)

面试题——字符的左右移动
摘要:字符的左右移动给定一个字符串,这个字符串为*号和26个字母的任意组合。现在需要把字符串的*号都移动到最左侧,而把字符串中的字母移动到最右侧并保持相对顺序不变,要求时间复杂度和空间复杂度最小。 分析:用star表示尾部的第一个*的位置, 然后从star出发,用指针letter指向star之前的第一个字 阅读全文

posted @ 2017-06-05 10:53 泡面小王子 阅读(718) 评论(0) 推荐(0)

5. Longest Palindromic Substring
摘要:最长回文串 Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example: Example: 回文字符串显然有个特 阅读全文

posted @ 2017-06-04 17:21 泡面小王子 阅读(172) 评论(0) 推荐(0)

9. Palindrome Number
摘要:Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could negative integers be palindromes? (ie, -1) If you are thi 阅读全文

posted @ 2017-06-04 09:56 泡面小王子 阅读(135) 评论(0) 推荐(0)