自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer-python刷题-反转链表

题目:输入一个链表,反转链表后,输出新链表的表头。之前做的时候已经练习过了,这里顺便实现了一种更直接的方法。方法一:直接创建新的链表。优点是思路更简单更清晰,缺点是需要额外的控件。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode

2021-07-05 10:59:26 124

原创 剑指offer-python刷题-链表中倒数最后k个结点

题目:输入一个链表,输出一个链表,该输出链表包含原链表中从倒数第k个结点至尾节点的全部节点。如果该链表长度小于k,请返回一个长度为 0 的链表。方法一:直接遍历列表,把所有节点存储在一个列表中, 返回倒数第k个元素即可。class Solution: def FindKthToTail(self , pHead , k ): # write code here m = [] while pHead: m.append

2021-07-02 18:41:53 236

原创 剑指offer-python刷题-调整数组顺序使奇数位于偶数前

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。最直观的方法就是创建两个新的空列表,分别存储输入列表中的奇数和偶数,最后把两个列表连接起来即可。class Solution: def reOrderArray(self , array ): # write code here if not array: ret

2021-07-01 20:24:02 225

原创 剑指offer-python刷题-二进制中1的个数

题目:输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。方法一:先转化为补码在计算1的个数。注意将一个十进制的数转化为补码可以直接使用该数与32位全1的二进制数按位与。# -*- coding:utf-8 -*-class Solution: def NumberOf1(self, n): # write code here n = n & 0xFFFFFFFF bin_num = bin(n)

2021-06-30 16:02:04 192

原创 剑指offer-python刷题-数值的整数次方

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。主要是区分整# -*- coding:utf-8 -*-class Solution: def Power(self, base, exponent): # write code here result = 1.0

2021-06-30 16:01:53 85

原创 剑指offer-python刷题-矩形覆盖

题目:和跳台阶问题类似的求解思路。对于有n块矩形需要覆盖的情况,第一块矩形如果竖着放置,则剩余的部分还有f(n-1)种覆盖方式;第一块矩形如果横着防止,则第二块一定也要横着放置,剩余部分还有f(n-2)种覆盖方式。即f(n) = f(n-1)+f(n-2)# -*- coding:utf-8 -*-class Solution: def rectCover(self, number): # write code here if number &

2021-06-29 13:56:41 119

原创 剑指offer-python刷题-跳台阶

题目:很显然题目的解法为f(n) = f(n-1)+f(n-2)解法一:利用循环的方法求解。# -*- coding:utf-8 -*-class Solution: def jumpFloor(self, number): # write code here if number == 1: return 1 if number == 2: return 2 f1 =

2021-06-28 16:41:52 56

原创 剑指offer-python刷题-重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。二叉树前序遍历的第一个结点一定是根节点,根据根节点在后序遍历中的位置,可以获得该二叉树根节点的左子树和右子树的前序遍历和中序遍历,由此可以调用递归算法。# -*- coding:utf-8 -*-# class TreeNode:# def __i

2021-06-26 15:58:59 94

原创 剑指offer-python刷题-二维数组中的查找

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15]]给定 target= 7,返回true。给定target=3,返回false。解法一:双层循环对二维列表进行遍历,但是时间复杂度比较高。# -*- coding:ut...

2021-06-25 16:02:19 157

原创 剑指offer-python刷题-二叉搜索树的第k个结点

题目:给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。二叉搜索树的特性:中序遍历后,单调递增。因此关键是写出二叉搜索树的中序遍历。基本思路:先把当前结点及其所有左叶结点逐个入栈,在逐个出栈,将其右叶结点入栈。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.rig

2021-06-24 11:39:24 115

原创 剑指offer-python刷题-构建乘积数组

题目:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。解法一:两层循环,内层求累乘,时间复杂度较大# -*- coding:

2021-06-23 17:31:04 111

原创 剑指offer-python刷题-数组中重复的数字

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1解法一:新建一个空列表,遍历输入列表中的元素,如果这个元素不在新列表中,就把他加进去,如果在新列表中,就输出该元素。class Solution: def duplicate(self , numbe

2021-06-22 20:17:56 120

原创 剑指offer-python刷题-不用加减乘除做加法

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解法一:直接使用列表的求和函数。

2021-06-10 21:51:06 85

原创 剑指offer-python刷题-从尾到头打印链表

题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。直接从头开始遍历链表,将结点的值保存在一个列表中,遍历结束后翻转lie'bi

2021-06-10 16:46:29 99

原创 剑指offer-python刷题-数组中出现次数超过一般的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000h...

2021-06-09 11:10:19 186

原创 剑指offer-python刷题-扑克牌顺子

题目:现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。有如下规则:1. A为1,J为11,Q为12,K为13,A不能视为142. 大、小王为 0,0可以看作任意牌3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。例如:给出数据[6,0,2,0,4]中间的两个0一个看作3,一个看作5 。即:[6,3,2,5,4]这样这五张牌在[2,6]区间连续,输出true数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13

2021-06-09 10:58:44 600 2

原创 剑指offer-python刷题-平衡二叉树

题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。...

2021-06-08 20:04:35 88

原创 剑指offer-python刷题-二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。方法一:每次

2021-06-08 15:48:06 118

原创 剑指offer-python刷题-两个链表的第一个公共结点

题目:输入两个无环的单链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)

2021-06-07 19:12:06 174

原创 剑指offer-python刷题-第一个只出现一次的字符

题目:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)

2021-06-06 15:00:05 151

原创 剑指offer-python刷题-连续子数组的最大和

题目:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).这个题如果不考虑

2021-06-01 17:32:11 131

原创 剑指offer-python刷题-包含min函数的栈

题目栈:先入后出刚拿到这道题感觉和之前一道类似https://blog.csdn.net/sinat_42437278/article/details/117372495?spm=1001.2014.3001.5501

2021-05-29 20:47:57 90

原创 剑指offer-python刷题-二叉树的镜像

题目:操作给定的二叉树,将其变换为源二叉树的镜像。比如: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...

2021-05-29 15:12:20 98

原创 剑指offer-python刷题-合并两个排序的链表

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。链表:线性表的链式表示

2021-05-29 14:19:32 73

原创 剑指offer-python刷题-跳台阶扩展问题

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

2021-05-29 11:58:15 190

原创 剑指offer-python刷题-旋转数组的最小数字

题目:旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。...

2021-05-28 20:25:51 100

原创 剑指offer-python刷题-用两个栈实现队列

栈:先入后出队列:先入先出python中没有栈这种数据结构,因此选择列表结构

2021-05-28 20:02:32 130

空空如也

空空如也

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

TA关注的人

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