自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 剑指offer J45:扑克牌顺子

剑指offer J45:扑克牌顺子问题LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!

2020-07-15 09:30:33 133

原创 剑指offer JZ31:整数中1出现的次数

剑指offer JZ31:整数中1出现的次数问题求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)思路是一道简单的10进制得到其各个位上的数字的问题,比较基础,暴力就完事了代码及解释class Solution: def Number

2020-07-15 09:14:53 103

原创 剑指offer JZ55:链表中环的入口结点

剑指offer JZ55:链表中环的入口结点问题给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路这也是一道简单的链表题,主要的想法就是将已经出现的链表结点放入一个hash表中,如果出现了和之前重复的结点,则输出代码及解释class Solution: def EntryNodeOfLoop(self, pHead): # write code here head = pHead if head == None

2020-07-14 20:35:09 121

原创 (难题)剑指offer JZ56:删除链表中重复的结点

剑指offer JZ56:删除链表中重复的结点问题在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路这道题看上去很简单,但是细细做起来就会发现非常困难首先,最简单的方法是直接将所有的链表和对应的数值输出到两个列表中,然后根据数值列表中前后位置元素大小是否相同,对应的删除链表列表中的元素,最后将链表列表组装成链表即可,但是这样会

2020-07-14 20:24:01 110

原创 剑指offer JZ15:反转链表

剑指offer JZ15:反转链表问题输入一个链表,反转链表后,输出新链表的表头。思路非常基础的链表题,几乎所有学习链表的程序员都会在一开始学习这个算法。大思路就是运用三个变量存储上一个,现在和下一个链表,然后将现在的next指向上一个链表,在更新三个变量。唯一需要注意的是,当while循环结束时(也即是curnode到达了链表尾),此时curnode.next并没有被指向lastnode,需要在后面加上。代码及解释class Solution: # 返回ListNode d

2020-07-14 16:54:12 93

原创 剑指offer JZ14:链表中倒数第k个结点

剑指offer JZ14:链表中倒数第k个结点问题输入一个链表,输出该链表中倒数第k个结点思路首先,看到问题的第一反应就是将链表的每个结点按顺序输出到列表里,再将列表中的倒数第k项输出即可,但是需要消耗0(N)的空间。这里运用一个非常巧妙的双指针算法:要输出倒数第k项,只需要让一个指针先跑k-1项,再让两个指针同时向后移动,当第一个指针到达队尾时,第二个指针指向的自然就是倒数第k项了。注意对于k>n等特殊情况的讨论代码及解释class Solution: def FindKth

2020-07-14 16:37:03 95

原创 剑指offer JZ13:调整数组顺序使奇数位于偶数前面

剑指offer JZ13:调整数组顺序使奇数位于偶数前面问题输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路在leedcode上做过一个相似的题目,不过当时没有要求相对位置不变,所以直接运用双指针,一个从前往后,一个从后往前,如果前为偶而后为奇,则调换就可以了,但是这里则不行。如果运用辅助列表,想法很简单,在这里不赘述了原位的排序,其实就只需要记录下第一个出现偶数的位置pe

2020-07-14 13:59:07 167

原创 剑指offer JZ12:数字的整数次方

剑指offer JZ12:数字的整数次方问题给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0思路这是一个简单的数学问题,但是需要考察细心程度:首先,e和b0的情况需要优先讨论掉(b0的 情况好像不讨论也没啥问题)其次,e是整数,所以要分正负讨论,负数则输出倒数总体难度不大代码及解释class Solution: def Power(self, base, exponent):

2020-07-14 13:38:01 95

原创 剑指offer JZ10:矩形覆盖

剑指offer JZ10:矩形覆盖问题题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?比如n=3时,23的矩形块有3种覆盖方法:思路这道题上来看上来很唬人,无从下手,但是从简单的例子中就能很快发现规律:对于n,其可以是n-1的情况下加上一个竖的21矩阵得到,也可以是n-2的情况下加上两个横的12得到**(注意这里最重要的是,这时候两个竖的2*1的放置方式是不行的,因为其已经在n-1的情况中考虑过了)**代码及解释

2020-07-14 11:12:19 96

原创 剑指offer JZ9:变态跳台阶

剑指offer JZ9:变态跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路这是经典的跳台阶的衍生问题,一个青蛙可以先跳x个台阶,接下来的问题等同调(n-x)台阶的问题,故而最终的结果是之前所有结果的和值得注意的是,dp[0] = 1表示的是青蛙第一次啥也不跳,第二次直接跳完所有的台阶(也就是一次跳完台阶)的情况。代码及解释class Solution: def jumpFloorII(self, number

2020-07-14 10:59:49 139

原创 剑指offer JZ8:跳台阶

剑指offer JZ8:跳台阶问题大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39思路又是一个经典的动态规划问题,只需要注意到n的情况等于n-1的和n-2的情况之和即可,注意开始时对特殊情况的讨论代码及解释class Solution: def jumpFloor(self, number): # write code n = number if n ==

2020-07-14 10:26:29 83

原创 剑指offer JZ2:替换空格

剑指offer JZ2:替换空格问题请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy这道题用python实现非常的简单,直接用split函数把字符串拆分成列表,再用join连接起来代码及解释class Solution: # s 源字符串 def replaceSpace(self, s): # write code here return('

2020-07-14 09:11:20 103

原创 剑指offer JZ7:斐波那契数列

剑指offer JZ7:斐波那契数列问题大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39思路斐波那契数列在算法中是经典的动态规划问题,只要给定前两个元素dp[0],dp[1],之后的所有元素都可以用前两个元素相加得到即可。唯一需要注意的是,由于这里是从第0项开始的,所以当初始化dp列表时,其长度是n+1代码及解释class Solution: def Fibonacci(self, n):

2020-07-13 22:12:11 153

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

这里写自定义目录标题剑指offer JZ7:从尾到头打印链表代码及解释剑指offer JZ7:从尾到头打印链表非科班小白一只,第一次尝试写blog,希望可以作为自己秋招笔试,面试时候的复习资料,这次解决的是从尾到头打印链表。当然,和显而易见的方法是顺着链表将所有的数值都记录在列表里,再反转列表即可,但是这里用反转链表再顺次打印出来的方法,来复习一下反转单向链表的方法代码及解释def printListFromTailToHead(self, listNode): # write code h

2020-07-13 22:00:57 189

空空如也

空空如也

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

TA关注的人

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