自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

字节与酒

一个技术分享博客

  • 博客(22)
  • 收藏
  • 关注

原创 剑指offer——不用加减乘除做加法

题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解答如下:环境: python 2.7.3(1)十进制加法分三步:(以5+17=22为例)只做各位相加不进位,此时相加结果为12(个位数5和7相加不进位是2,十位数0和1相加结果是1);做进位,5+7中有进位,进位的值是10;将前面两个结果相加,12+10=22(2)这三步同样适用于二进制位...

2020-03-16 15:04:46 135

原创 剑指offer——二进制中1的个数(解释n & 0xFFFFFFFF)

题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解答如下:环境: python 2.7.3正数的原码反码补码都一样负数的补码是其对应正数的反码加1这里需要弄清楚为什么python中负数需要和 0xFFFFFFFF 做与操作?在计算机中,所有的数字都是使用补码存储起来的。由于Python没有位数这个概念,所以得到二进制表示需要多一点操作,即将位数限制在32位,...

2020-03-16 11:52:17 1375

原创 剑指offer——链表中环的入口节点

题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解答如下:环境:python 2.7.3本题的思路是设置快指针fastPointer,步长为2,设置慢指针,步长为1。循环先移动慢指针再移动快指针,然后判断它们是否相遇,如果相遇了则说明链表有环,否则链表没有环。当它们相遇时,我们可以知道,快指针走过的总步数是满指针走过总步数的两倍。(1)我们设L为慢指...

2020-03-16 10:00:28 131

原创 剑指offer——孩子们的游戏

题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后...

2020-03-15 17:05:15 303

原创 剑指offer——两个链表的第一个公共节点

题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)解答如下:环境: python 2.7.31.本题设置两个指针,p1指向pHead1,p2指向pHead2,然后让它们同时像后移动,如下图,当p1指向None时,开始向后移动p2,这样就可以统计两指针间距,其实也就是两链表的长度差,如下图k=2。(如果两...

2020-03-15 16:29:10 203

原创 剑指offer——复杂链表的复制

题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解答如下:环境:python 2.7.3本题的思路是:1.用pTmp指针遍历原链表的每一个节点,复制原链表的每个节点并作为对应原节点的下一个节点,显示在下图就是复制红...

2020-03-15 16:13:57 101

原创 剑指offer——合并两个排序的链表

题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解答如下:环境:python 2.7.3本题给出两个单调递增链表,最后要求合成为单调不减链表。本题先判断两链表是否为空,不为空时判断哪个链表的第一个节点值小,小者作为新的链表头newHead,然后设置prePtr指针指向新链表的表尾,这样做是为了采用尾插法插入新的节点,采用两个指针pTmp...

2020-03-15 15:46:22 105

原创 剑指offer——反转链表

题目描述:输入一个链表,反转链表后,输出新链表的表头。解答如下:环境:python 2.7.3本题就是设置3个指针:p1 p2 p3,刚开始让p1指向表头,p2指向表头的下一个节点,p3指向p2的下一个节点,然后修改p2的next指针指向p1,然后挪动这3个指针,让p1指向p2,p2指向p3,p3指向p3的下一个节点,每次都改变p2.next=p1,直到p3指向None后最后一次改变p2的...

2020-03-15 15:29:14 155

原创 剑指offer——链表中倒数第k个节点

题目描述:输入一个链表,输出该链表中倒数第k个结点。解答如下:环境: python 2.7.3本题可以设置两个指针,firstPoint和secondpoint,让firstPoint先跑k步,那么firstPoint往链表头方向的第k步就是secondPoint,意思就是两指针间距为k,再让两指针同时向后移动,保持距离为k,当firstPoint跑到链表尾部后的None时,它的前第k个节...

2020-03-15 15:17:50 105

原创 剑指offer——从尾到头打印链表

题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。解答如下:环境: python 2.7.3本题要求返回一个列表,其存储了逆序的链表。那么可以遍历链表,然后不断把链表的节点值插入到列表的最前面。class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, lis...

2020-03-15 15:02:52 92

原创 输出1-100以内的所有质数

题目描述:输出1到100以内的所有质数解答如下:环境: Java质数(素数):质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,最小的质数是2。非质数(合数):指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。与之相对的是质数,而1既不属于质数也不属于合数。最小的合数是4。本题直接给出最优解: //因为除了2的偶数肯定不是质数,所以只考...

2020-03-09 22:18:44 1733

原创 交换两个变量的三种方式

方式一:定义临时变量(推荐)方便记忆:从temp开始-num1-num2-temp首尾相连int temp = num1;num1 = num2;num2 = temp;方式二:使用加减操作如果感觉不好记可以记住num1 = num1 + num2;然后带入具体数字。比如num1 = 1, num2 = 2。num1 = num1 + num2;num2 = num1 - num...

2020-03-09 21:34:56 208

原创 剑指offer——栈的压入、弹出序列

题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解答如下:环境: python 2.7.3本题在数据结构一书中出现过,判断弹出顺...

2020-03-09 21:01:03 171

原创 剑指offer——包含min函数的栈

题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。解答如下:环境:python 2.7.3本题使用空间换时间的思想,建立两个栈Stack和minValue,前者做普通栈后者做最小值栈,后者的顶部元素总是保存全局最小值,这里PUSH函数和PO...

2020-03-09 20:38:37 91

原创 剑指offer——调整排序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解答如下:环境: python 2.7.3本题就是空间换时间的思想,创建一个新的数组,遍历原数组,依次把奇数放在新数组前面, 偶数放在新数组后面。时间复杂度:O(n) 空间复杂度:O(n)class Solut...

2020-03-09 20:06:45 81

原创 剑指offer——旋转数组的最小数字

题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解答如下:环境:python 2.7.3解法一:暴力解法 时间复杂的O(n)旋转数组的最小值必然比前面它所在位...

2020-03-09 19:58:48 109

原创 剑指offer——用两个栈实现队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解答如下:环境:python 2.7.3队列是先进先出的,栈是后进后出的,那么一个栈必然会是正向输入逆向输出,就像一列火车,想象如何实现栈的正向输入正向输出,那么就可以用两个栈,先逆序在正序,同样可以想象成一列火车,如上图所示。建立两个栈,一个接收栈,一个输出栈,当我们push时,就把数据压入接...

2020-03-06 15:10:55 175 1

原创 剑指offer——二维数组中的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解答如下:环境:python 2.7.31 2 3 43 4 5 64 6 8 109 11 13 15本题当然可以使用双重for循环的暴力解法,挨个遍历数...

2020-03-06 14:51:09 111

原创 剑指offer——替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解答如下:环境:python 2.7.3这题解法简单,直接创建一个列表,然后挨个把字符放进列表,遇到空格则追加%20。class Solution: # s 源字符串 def replaceSpace(sel...

2020-03-06 14:36:41 94

原创 剑指offer——变态跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解法如下:环境:python 2.7.3阅读本文前建议先练习《剑指offer——跳台阶》,其核心思想还是逆向跳台阶的方法,假设青蛙反向跳台阶一次,那么从n可以跳到n-1到1之间这么多位置,假设f(n)表示跳跃到n处的总跳跃方法,那么f(n)就是跳到1到n-1的所有跳跃方法...

2020-03-05 16:00:36 125

原创 剑指offer——跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解答如下:环境:python 2.7.3方法:非递归法其实本题和斐波拉契类似,我们可以通过举例子找出规律,然后按照斐波拉契的思想求出结果,也可以使用另外一种思想,也就是假设青蛙是逆向跳台阶的,从n阶往下跳,假设只能跳一次,那么有两种跳跃结果,1.跳一步到n-1的...

2020-03-05 15:41:31 100

原创 剑指offer——斐波那契

题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解答如下:环境:python 2.7方法一:递归每个数据都要计算两次,1变成2,2变成4,4变成8,所以时间复杂度是2的n次方。class Solution: def Fibonacci(self, n): # write code...

2020-03-05 00:17:13 123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除