随笔分类 - 其他
摘要:题目:写一个函数,求两个整数之和,要求在函数体内不得实用+、-、x、%四则运算符。 接下来我们试着把二进制的加法用位运算来替代。第一步不考虑进位对每一位相加。0加0、1加1的结果都为0,0加1、1加0的结果都是1。我们注意到,这和异或的结果是一样的。对异或而言,0和0、1和1异或的结果是0,而0和1
阅读全文
摘要:题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写出程序找出这两个只出现一次的数字。要求时间复杂度为o(n),空间复杂度是o(1)。 这两个题目都在强调一个(或两个)数字只出现一次,其他的出现两次。这有什么意义呢?我们想到异或运算的一个性质:任何一个数字异或它自己都等于0。也就是说,
阅读全文
摘要:写一个函数,输入n,求斐波那契数列(Fibonacci)数列的第n项。斐波那契数列定义如下: 当n=0时,f(n)=0;当n=1时,f(n)=1;当n>1时,f(n)=f(n-1)+f(n-2)。 效率很低的解乏,挑剔的面试官不会喜欢。 我们以求解f(10)为例来分析递归的求解过程。想求得f(10)
阅读全文
摘要:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a stude
阅读全文
摘要:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 思路:三
阅读全文
摘要:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路:an=an/2*an/2(n为偶数) = a(n-1)/2*a(n-1)/2*a(n为奇数) 根据这个公式,我们可以把这个当成一个递推公式,如an与a(n/2)的关系(an/2与a(
阅读全文
摘要:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 知识点:把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中最右边一个1变成0,可以将整数的二进制中最右边(不是0的位置)的1消掉。所以,有多少个1,循环就执行几次;反过来说,循环执行几次,就有几个1.
阅读全文
摘要:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 第一种思路是:从数组的第
阅读全文

浙公网安备 33010602011771号