![](https://img-blog.csdnimg.cn/20210721205232420.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
剑指offer
剑指offer的刷题记录
凡麓清心
这个作者很懒,什么都没留下…
展开
-
剑指offer17-打印从1到最大的n位数
输入n,打印从1到最大的n位十进制数。示例:输入3,打印1、2、3、、、、、999def printNumbers(n: int): num = [] #直接计算出最大的数,将小的都加入列表 i = 0 max = 0 while i < n : max += 9 * pow(10,i) i += 1 # print(max) for i in range(1,max+1): nu...原创 2021-08-17 16:30:07 · 97 阅读 · 0 评论 -
剑指offer13:机器人的运动范围(python)
地上有一个m行n列的方格,一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例: 输入:m = 2, n = 3, k = 1 输出:3这道题自己没有...原创 2021-08-11 16:28:41 · 232 阅读 · 0 评论 -
剑指offer11:旋转数组的最小数字(python)
旋转数组:数组最开始的若干元素搬到数组末尾。输入:一个递增排序数组的旋转输出:旋转数组的最小元素示例:[3,4,5,1,2]为[1,2,3,4,5]的旋转,最小值为1方法一 暴力解法class Solution: def minArray(self, numbers: List[int]) -> int: min = numbers[0] for i in numbers: if i < min : ...原创 2021-08-09 16:47:59 · 108 阅读 · 0 评论 -
剑指offer10:斐波那契数列及青蛙跳台阶问题(python)
输入n,求斐波那契数列的第n项。答案取模1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。首先试了一下最常规的递归方法,很快写好但是对于稍大一点的数字,大量的重复计算使得运行时间就很长。然后就用了非递归,从小往大计算,用python自带的队列deque保存中间结果,记得在保存的时候就直接取模。from queue import dequedef fib2(n: int) -> int: #非递归 q = deque() i..原创 2021-08-08 15:05:42 · 177 阅读 · 0 评论 -
剑指offer09:用两个栈实现队列
用两个栈实现一个队列。appendTail 在队列尾部插入整数daleteHead 在队列头部删除整数,没有元素,返回-1我的思路:主要在stack1中存储,stack2用来辅助,插入元素就不说了,删除元素时,将stack1的元素pop进stack2中,删除之后,再pop回去。class CQueue: def __init__(self): self.stack1 = [] #以1为主 self.stack2 = [] #2辅助变换...原创 2021-08-05 21:58:37 · 119 阅读 · 0 评论 -
剑指offer07:重建二叉树
题目要求:输入二叉树的前序遍历和中序遍历,构建二叉树,返回根节点我的思路:前序遍历的特点就是先访问根节点,所以由此可以先找到根,然后在中序遍历中找到根的位置,将中序列表分为左右两部分,递归一直寻找根节点返回。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2021-08-04 16:55:59 · 71 阅读 · 0 评论 -
剑指offer06:从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。首先看到题目之后想到两种方法:一种是将元素全部加入数组中,在数组中头尾对调;另一种是直接在链表中反转,然后遍历加入数组中。分别用两种方法都做了一下。#一种方法:直接遍历链表到数组里,将数组前后元素对调def reversePrint2(head: ListNode): if head == None : #链表为空 return [] if head.next == None:原创 2021-08-03 11:17:56 · 80 阅读 · 0 评论 -
剑指offer05:替换空格
# 要求:把字符串 s 中的每个空格替换成"%20"。0 <= s 的长度 <= 10000def replaceSpace(s: str) -> str: if len(s) == 0: #为空字符串 return s #1.将s按照空格分开 list = s.split(" ") # print(list) if len(list) == 1: #字符串中没有空格 return s #2.用%20拼接.原创 2021-08-02 11:37:54 · 78 阅读 · 0 评论 -
剑指offer04:二维数组中的查找
'''n*m的二维数组:每行从左到右,从上到下递增判断是否含有某整数'''def findNumberIn2DArray(matrix, target: int) -> bool: #1.挨行遍历,当行的第一个元素小于target时,遍历此行; #二位数组行和列长度 colLen = len(matrix) if colLen == 0 : #二维数组没有元素 return False rowLen = len(matrix[.原创 2021-07-31 17:00:52 · 69 阅读 · 0 评论 -
剑指offer03:数组中重复的数字—python
'''长度为n的数组nums所有数字【0,n-1】找出数组中任意一个重复的数字'''def findRepeatNumber(nums) -> int: #计数 #1、找到最大值和最小值, max = nums[0] min = nums[0] for i in nums: if i > max: max = i elif i < min : min = i.原创 2021-07-21 22:02:29 · 193 阅读 · 0 评论