挑战面试编程
文章平均质量分 81
苏叔叔
Isolation is not good for me!
展开
-
挑战面试编程:链表逆转的多种实现
链表逆转的多种实现链表的逆转是一种常见又较复杂的操作,下面使用多种方式进行实现:while、递归以及goto。原创 2014-10-23 23:09:01 · 2831 阅读 · 0 评论 -
挑战面试编程:字符串转换为整数
挑战面试编程:字符串转换为整数将类似这样的字符串,"abc123abc"转换为整数,即为123。若是"abc",则直接输出0。本题看似很简单,但有些地方还得注意:字符串中可能带有符号,如'+' '-',这得考虑。该整数位可能很长,所以必须能够处理溢出的情况:对于过大的,输出MAX_INT;对于过小的,输出MIN_INT。代码原创 2014-05-07 22:48:29 · 1479 阅读 · 0 评论 -
挑战面试编程:计算整数二进制位中1的个数
题目:在计算机中,整数是以2的补码的形式给出的。 给出整数A和B,假设计算机是32位机,求从A到B之间的所有二进制数中,一共用了多少个1。 输入格式: 多组数据,每组数据一行,由两个整数A,B, -2147483648<=A<=B<=2147483647 输出格式: 每组输出一行,从A到B使用的1的个数。(本题取自csdn高校俱乐部线上编程挑战赛)分析: 我们知道任何数据在计算机中都是用二进制表示的,即用一堆0或1表示各种类型的数据。当然还要考虑它的字节数,例如在32位机中。sizeof原创 2014-05-07 21:22:20 · 2286 阅读 · 4 评论 -
挑战面试编程:左移字符串
挑战面试编程:左移字符串问题描述:左移字符串:如有字符串“abcdefg”,可把它看作是一首尾相连的字符串,左移三个字符后,变为“defgabc”,请编程实现。方法一:利用额外的内存空间,实现中转。步骤1:把“abc”存储到额外空间;步骤2:把“defg”移动到字符串的首部。至此,“defg”到达最终位置。步骤3:把“abc”strcat到“defg”的尾部。原创 2015-06-17 18:04:29 · 1534 阅读 · 0 评论 -
挑战面试编程:最大连续子序列和
挑战面试编程:最大连续子序列和问题对于形如:int arr[] = { 1, -5, 3, 8, -9, 6 };的数组,求出它的最大连续子序列和。若数组中全部元素都是正数,则最大连续子序列和即是整个数组。若数组中全部元素都是负数,则最大连续子序列和即是空序列,最大和就是0。方法一用sum[i,j]表示arr[i]到arr[j]的和,则显然可以通过枚举(i<=j),求出所有的和。原创 2014-05-08 00:29:25 · 1781 阅读 · 0 评论 -
挑战面试编程:回文串、回文数字
回文(palindrome)问题是一个很常见的问题。回文现象是指从左到右和从右到左阅读是一样的串或数字。例如串:"abcba"、数字:121。串的回文问题一、从首尾向中间递进二、从中间向首尾递进复杂度分析因为最多只需遍历一次串,所以以上两种方法的时间复杂度都是O(n)。只使用到了两个int型的变量充当指针,故空间复杂度都是O(1)。原创 2014-08-10 11:20:56 · 4273 阅读 · 1 评论 -
挑战面试编程:大整数的加、减、乘、除
大整数的加、减、乘、除 一切都是有限的,哪怕是看起来无限的时间或空间都很可能是有限的。在计算机中内置类型的加、减、乘、除都是有限的。我们来实现一个“无限”的大整数加、减、乘、除。以下使用C++代码实现原创 2015-06-10 10:59:15 · 4810 阅读 · 2 评论 -
挑战面试编程:十六进制数转化为八进制数
挑战面试编程:十六进制数转化为八进制数题目:问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式 输出n行,每行为输入对应的八进制正整数。注意 输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。样例输入239123ABC样例输出71443原创 2015-03-17 23:19:15 · 2547 阅读 · 0 评论 -
挑战面试编程:字符串匹配的双重递归式写法
字符串匹配的双重递归式写法字符串的匹配有很高效的KMP、Sunday等算法,可供使用。下面使用的匹配算法本质上是朴素的,但它的双重递归式的写法仍然值得借鉴。原创 2014-09-24 11:43:06 · 1967 阅读 · 0 评论 -
挑战面试编程:原码、反码、补码
原码、反码、补码是关于整数在计算机中的三个概念。在计算机中,对于整数是这样存储的,在所有的二进制位中用一位(最高位)当做符号位,约定0表示正数,1表示负数,其余的是数值位。需要指出正数的原码、反码、补码都是一样的。对于sizeof(int)为4的环境,1 的二进制是 0000 0000 0000 0000 0000 0000 0000 0001 (原码)-1的二进制是 1000 0000 0000 0000 0000 0000 0000 0001 (原码)反码反码则规定为相对于原码符号位不变,数值原创 2014-09-22 17:16:13 · 2200 阅读 · 0 评论 -
挑战面试编程:单词翻转、高斯公式、魔方矩阵、黑白球、3n+1
题一: 把一字符串如"I love you."变为"you. love I"。题二: 高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。现在问题在于给你一个正整数n,问你他可以表示为多少种连续正整数之和?(自身也算)。(取自csdn高校俱乐部线上编程挑战赛)题三:打印魔方矩阵:如三阶的:8 1 63 5 74 9 2规律是:题四 黑白球一个袋子里有两种颜色的球,黑色和白色,你每次从中取出两个球,如果是同色的,则在袋子里放一个白球,否则放回一个原创 2014-05-08 17:26:35 · 2161 阅读 · 1 评论 -
挑战面试编程:字符串包含
字符串查找是在一个大的文本中查找一个给定的模式串,常用的算法有KMP、BM、Sunday等。而字符串包含要求比较低:只要字符包含就行,不需要连续。例如,S="abcd",T="ac",做查找运算,则T不在S中;做包含运算,T包含在S中。原创 2014-08-15 20:51:08 · 1499 阅读 · 1 评论 -
挑战面试编程:字符串替换
字符串替换写一个字符串替换函数,如母串"123123123123",把母串中的子串"123",替换为"12345",或者"12"。思路:利用库函数strstr(),定位子串。使用strcpy()进行替换。不断重复着定位和替换操作,直到定位到NULL为止。原创 2014-09-17 00:07:04 · 2599 阅读 · 2 评论 -
挑战面试编程:查找数组中第k大的数
查找数组中第k大的数问题: 查找出一给定数组中第k大的数。例如[3,2,7,1,8,9,6,5,4],第1大的数是9,第2大的数是8……思路: 1. 直接从大到小排序,排好序后,第K大的数就是arr[k-1]。 2. 只需找到第k大的数,不必把所有的数排好序。我们借助快速排序中partition过程,一般情况下,在把所有数都排好序前,就可以找到第k大的数。我们依据的逻辑是,经过一次原创 2016-01-08 16:33:23 · 5635 阅读 · 5 评论