剑指offer
宇哲_安菲尔德
这个作者很懒,什么都没留下…
展开
-
剑指offer—数值的整数次方
面试题11:题目:实现函数double power(double base , int exponment) ,求base的exponment次方。不得使用库函数,同时不需要考虑大数问题。我想刚看到这个问题,很可能好多人都笑了,觉得是很简单的一道题,接下来就拿起笔来直接写了。 例如实现1:#include<stdio.h> #include<stdlib.h> double Power(doubl原创 2016-05-10 21:59:24 · 1135 阅读 · 0 评论 -
剑指offer—二进制中1的个数
面试题10:二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。首先对于二进制1的求解,在这里,我们最应该想到的就是关于位运算的一些操作符。总共有五种运算,分别是:与(&),或(|),异或(^),右移(>>),左移(<<)。第一种可能会引起死循环的解法: 咱们平时的思路一般是:先对你所给的这个原创 2016-05-09 23:56:53 · 4231 阅读 · 0 评论 -
剑指offer刷题—斐波那契数列
我相信每一个学过语言的人都应该知道斐波那契数列这么个东西。关于斐波那契数列我们也做过相关的题,接下来,我们来探讨一下这个问题。 面试题9:斐波那契数列 题目一:写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下:当n=0时,f(n)=0,当n=1时,f(n)=1,当n>1时,f(n)=f(n-1)+f(n-2)。这个算法首先咱们应该知道,很多书会用递归的算法解决这个问题。#inc原创 2016-05-08 22:15:34 · 922 阅读 · 0 评论 -
剑指offer—求字符串中第一个只出现一次的字符
对于这个问题,常规思路我们进行分析,你首先肯定是喜欢先让指向一个字符,然后和它后面的每个字符进行比较,如果后面没有相同的字符的话,这个字符就是你所要找的第一个只出现一次的字符。 但是这种思路我们首先要比较n个字符,然后每个字符可能要与后面有n个字符比较,所以,最后我们可以知道这个的时间复杂度为O(n^2),作为一个精益求精的程序员,我想我们肯定要对此进行优化。对于这个字符串,我们面对这里面所有的字原创 2016-05-18 21:49:03 · 3559 阅读 · 0 评论 -
剑指offer刷题—替换空格
一天一题的时间又到了,刚好是周六,让我们今天来好好分析一下下面这一道题: 面试题4:替换空格 请实现一个函数,把字符串中的每个空格替换成为“%20”.例如输入“We are happy”,则输出“We%20are%20happy”首先对于这一道题,其实在网络编程中,是会用到的,我们常常将例如‘ ’这样的字符转换成其他可以识别的字符。转换规则是在‘%’后面跟上ASCII码的十六位进制的表示。对于这原创 2016-05-07 14:52:04 · 894 阅读 · 0 评论 -
剑指offer刷题—二维数组的查找
最近接触到一本书叫做剑指offer,在这里准备在这个2个月左右将这本书刷完,当然,不需要每天多少道什么的,不在多,一天理解一道就好了,希望能成为一种习惯,另外,准备在github上也进行同步分享。今天第一道题: 面试题3:二位数组中的查找 当我们需要解决一个复杂问题时,一个很有效的方法就是从具体的问题出手,通过分析具体的例子,得到规律。 再一个二维数组中,每一行都要按照从左到右递增的顺序排序,原创 2016-05-06 22:54:52 · 1961 阅读 · 0 评论 -
剑指offer—打印1到最大n位数
面试题12: 题目:输入数字n,按照顺序答应出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的三位数即999。 对于这道题进行时,咱们会进行一些分析,当你输入3时,最大的三位数是999,这就是说这个最大的数是9*10^n-1+9 *10^n-2+。。。+9 *10^0。所以在这我想学习C语言的初学者都可以打出下面这个程序:#define _CRT_SECURE_NO_WARNI原创 2016-05-16 23:14:34 · 1250 阅读 · 0 评论 -
剑指offer—字符串转换整数
对于这个问题,其实最先开始我是采用循环的方式进行的,int StrToInt(char *str) { int number=0; while(*str!=0) { number=number*10+*str-'0'; str++; } return number; }这是最初的一个想法,在我们遇到这个情况了以后,我们作为编程的原创 2016-05-28 10:40:53 · 3430 阅读 · 0 评论 -
剑指offer—数组中只出现一次的数字
继续进行今天的每日一题的:面试题40:题目:一个整形数组里出了两个数字之外,其他的数字都出现了两次。请从程序中找出这两个只出现一次的数字。要求时间的复杂度为O(n),空间复杂度是O(1)。这一道题,比如我们给出一个数组{2,3,4,5,6,2,3,4}我们按照最先开始的思维,会这样想,我从头进行遍历,对一个数字和它后续的数字进行匹配。如果后续有和他一样的数字,那么就看下一个数,如果后续没有和他一样的原创 2016-05-12 23:26:18 · 1492 阅读 · 0 评论 -
剑指offer—调整数组顺序
面试题14:调整数组顺序使得奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。当最初遇到这个问题,大多数人的想法肯定是从头遍历数组,没碰一个偶数,拿出数字,然后移动后续的数字,把偶数放到最后的空位置,这样的时间复杂度是O(n^2);对于追求效率的我们不会因为这样一个算法而满足的!所以我们需要效率更高的算法。原创 2016-05-11 21:11:36 · 879 阅读 · 0 评论 -
剑指offer—左旋转字符串
题目:字符串的左旋转操作时把字符串前面的若干个字符转移到字符串尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串“abcdefg”和数字2,该函数将返回左旋转2位得到结果“cdefgab”对于这一道题,按照普通的思想我们的想法一般都是先把字符a取出来,然后把后面你的字符串向前移动,然后把a放到最后。然后依次再把b进行一次,就可以了。代码:#include<stdio.h> #includ原创 2016-05-20 17:12:55 · 5059 阅读 · 0 评论