剑指offer
文章平均质量分 57
牛客网剑指offer
freedomUSTB
这个作者很懒,什么都没留下…
展开
-
剑指offer笔记整理(python)
本博客借鉴了这篇博客的版面设计,以及部分解题思路,主要用于个人剑指offer的刷题过程中的笔记整理。链表部分(8道)二叉树部分(12道)二叉树基础:前序、中序、后序遍历剑指Offer(四):重建二叉树剑指Offer(十七):树的子结构剑指Offer(十八):二叉树的镜像剑指Offer(二十二):从上往下打印二叉树剑指Offer(二十四):二叉树中和为某一值的路径剑指Offer(三十八):二叉树的深度剑指Offer(三十九):平衡二叉树剑指Offer(五十七):二叉树的下一个结点剑指O原创 2020-07-15 16:33:59 · 216 阅读 · 0 评论 -
新增:求最小数字
"""题目描述:非负整数 A, 整数B从A去掉B个数字,使剩下数字最小。"""def mini(nlist): tmp = 10 idx = -1 for i, ele in enumerate(nlist): if ele < tmp: tmp = ele idx = i return tmp, idxclass Solution: def minimum_num(self, num原创 2022-04-20 20:51:17 · 296 阅读 · 0 评论 -
剑指offer_二分法_和为S的两个数字
和为S的两个数字# -*- coding:utf-8 -*-class Solution: def FindNumbersWithSum(self, array, tsum): # write code here product = float("inf") left = 0 right = len(array)-1 ...原创 2020-03-21 16:13:37 · 151 阅读 · 0 评论 -
剑指offer_二叉树_二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列参考答案问题解析思路:根据二叉搜索树的性质递归判断数组是否符合该性质,符合则输出yes,不符合则输出no二叉搜索树是对一个有序数组进行二分查找形成的搜索树,它指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二...原创 2020-03-25 21:48:26 · 103 阅读 · 0 评论 -
剑指offer_二叉树_二叉树的下一个结点
二叉树_二叉树的下一个结点题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。参考答案# -*- coding:utf-8 -*-# class TreeLinkNode:# def __init__(self, x):# self.val = x# s...原创 2020-03-28 10:52:04 · 94 阅读 · 0 评论 -
剑指offer_二叉树_二叉树的镜像
二叉树的镜像参考答案1参考答案2# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回镜像树的根节点...原创 2020-03-24 21:38:42 · 107 阅读 · 0 评论 -
剑指offer_二叉树_按之字形顺序打印二叉树
按之字形顺序打印二叉树题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。参考答案# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# se...原创 2020-03-29 15:59:59 · 111 阅读 · 0 评论 -
剑指offer_二叉树_从上往下打印二叉树
二叉树_从上往下打印二叉树题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。问题解析# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None...原创 2020-03-26 21:31:39 · 84 阅读 · 0 评论 -
剑指offer_分析_丑数
丑数分析思路参考代码# -*- coding:utf-8 -*-class Solution: def GetUglyNumber_Solution(self, index): # write code here if index == 0: return 0 ugly_num = [1] c...原创 2020-03-23 20:11:13 · 85 阅读 · 0 评论 -
剑指offer:最长不含重复字符的子字符串(python)
## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param s string字符串 # @return int整型#class Solution: def lengthOfLongestSubstring(self , s: str) -> int: # write code here if len(s) == 1: return 1 length = len(s).原创 2022-03-25 15:00:55 · 652 阅读 · 0 评论 -
剑指offer_二叉树_二叉搜索树的第k个结点
二叉搜索树的第k个结点题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。解题思路将问题转化为二叉搜索树的中序遍历问题,(5,3,7,2,4,6,8) 的中序遍历形式为(2, 3, 4, 5, 6, 7, 8),中序遍历的第k个值便是第k个节点,详解和参考答案在这里。# -*- coding:u...原创 2020-04-06 16:10:37 · 106 阅读 · 0 评论 -
剑指offer_二叉树_平衡二叉树
二叉树_平衡二叉树题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。参考答案# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass So...原创 2020-03-28 10:28:23 · 100 阅读 · 0 评论 -
剑指offer:(二叉树)二叉树中和为某一值的路径(回溯法)
二叉树_二叉树中和为某一值的路径题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)参考答案# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):#...原创 2020-03-28 17:14:15 · 109 阅读 · 0 评论 -
剑指offer:二叉树中和为某一值的路径(一)(python)
# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param root TreeNode类 # @param sum int整型 # @return bool布尔型#class Solution: .原创 2022-03-12 18:35:54 · 982 阅读 · 0 评论 -
快排算法 & 二分查找算法(python)
数组基础:快排算法 & 二分查找算法(python)def binary_search(array, n): left = 0 right = len(array) - 1 while left < right: mid = (left + right)//2 if array[mid] > n: right = mid elif array[mid] < n:原创 2022-03-07 15:59:38 · 318 阅读 · 0 评论 -
剑指offer_栈的压入、弹出序列
栈的压入、弹出序列转载:https://www.cnblogs.com/GF66/p/9785462.html# -*- coding:utf-8 -*-class Solution: def IsPopOrder(self, pushV, popV): # write code here if len(pushV) == 0: ...原创 2020-03-19 21:25:50 · 93 阅读 · 0 评论 -
剑指offer:包含min函数的栈(python)
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack = [] self.min_stack = [] def push(self, node): # write code here self.stack.append(node)原创 2022-03-02 14:42:03 · 339 阅读 · 0 评论 -
剑指offer_链表_删除链表的结点
剑指offer_链表_删除链表的结点思路:链表基本操作。# class ListNode:# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param head ListNode类 # @param val int整型 # @return ListNode类#class Solution:原创 2022-02-21 20:17:56 · 234 阅读 · 0 评论 -
剑指offer_链表_删除链表中重复的结点
链表_删除链表中重复的结点思路:可参考https://www.cnblogs.com/dolisun/p/11337768.html# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solut...原创 2020-03-14 19:48:03 · 108 阅读 · 0 评论 -
剑指offer_链表_链表中环的入口结点
链表_链表中环的入口结点思路:参考https://blog.csdn.net/qq_20141867/article/details/80931915# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Nonecl...原创 2020-03-14 16:59:44 · 115 阅读 · 0 评论 -
剑指offer_链表_两个链表的第一个公共结点
链表_两个链表的第一个公共结点思路:参考https://www.cnblogs.com/yqpy/p/9551004.html# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution...原创 2020-03-12 21:05:12 · 97 阅读 · 0 评论 -
剑指offer_链表_复杂链表的复制
链表_复杂链表的复制思路:记住吧。参考https://blog.csdn.net/jiangjiang_jian/article/details/81490693# -*- coding:utf-8 -*-# class RandomListNode:# def __init__(self, x):# self.label = x# self...转载 2020-03-12 20:00:50 · 107 阅读 · 0 评论 -
剑指offer_链表_合并两个排序的链表
链表_合并两个排序的链表思路1:error思路2:递归思想。https://www.jb51.net/article/157249.htm# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass...原创 2020-03-09 21:11:38 · 86 阅读 · 0 评论 -
剑指offer_动态规划_剪绳子
动态规划_剪绳子思路:动态规划class Solution(): def maxProfuctAfterCutting(self,length): if length < 2: return 0 if length == 2: return 1 if length == 3: ...转载 2020-03-21 15:56:06 · 88 阅读 · 0 评论 -
剑指offer_列表_滑动窗口的最大值
滑动窗口的最大值思路:遍历# -*- coding:utf-8 -*-class Solution: def maxInWindows(self, num, size): # write code here if size == 0: return [] length = len(num) - size + 1...原创 2020-03-21 16:47:16 · 107 阅读 · 0 评论 -
剑指offer_递归_求1+2+3+...+n
求1+2+3+…+n题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:使用递归f(n) = f(n-1) + n, 但是不能使用if进行递归出口的控制,因此利用python中and的属性,即and判断都为真的话输出and后面的那个数字。正确答案:# -*- coding:utf-8 -*...原创 2020-03-25 22:24:23 · 620 阅读 · 0 评论 -
剑指offer_滑动窗口_和为S的连续正数序列
滑动窗口_和为S的连续正数序列思路:滑动窗口转载自:https://blog.csdn.net/gui951753/article/details/92416352# -*- coding:utf-8 -*-class Solution: def FindContinuousSequence(self, tsum): # write code here ...原创 2020-03-21 16:33:48 · 118 阅读 · 0 评论 -
剑指offer_复习_整数中1出现的次数(从1到n整数中1出现的次数)
整数中1出现的次数思路:添加链接描述https://blog.csdn.net/u010005281/article/details/80085255# -*- coding:utf-8 -*-class Solution: def NumberOf1Between1AndN_Solution(self, n): mult, sumTimes = 1, 0 ...转载 2020-03-21 21:40:49 · 106 阅读 · 0 评论 -
剑指offer_列表_最小的K个数
最小的K个数# -*- coding:utf-8 -*-class Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here if k > len(tinput): return [] min_values = []...原创 2020-03-21 16:55:37 · 103 阅读 · 0 评论 -
剑指offer_顺时针打印矩阵
顺时针打印矩阵题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路最近不太在状态,直接上参考答案吧。# -*- coding:utf-8 -*-class...原创 2020-04-07 19:59:08 · 86 阅读 · 0 评论 -
剑指offer_回溯法_机器人的运动范围
机器人的运动范围题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解题思路看了参考答案,这...原创 2020-04-06 11:45:36 · 113 阅读 · 0 评论 -
剑指offer_斐波那契数列_矩形覆盖
矩形覆盖题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?比如n=3时,23的矩形块有3种覆盖方法:解题思路:当n=1时,记作F(1), 共有1种方法;当n=2时,记作F(2), 共有2种方法;当n=3时,记作F(3), 分为3种方法:最后可以看出,覆盖方法符合斐波那契数列数列的通式,即:F(0) ...原创 2020-03-29 15:42:49 · 190 阅读 · 1 评论 -
剑指offer_递归_变态跳台阶
变态跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。问题分析# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write code here return 2**(number-1)...原创 2020-03-25 21:54:20 · 83 阅读 · 0 评论 -
剑指offer:跳台阶(Python)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析:变相的斐波那契数列。# -*- coding:utf-8 -*-class Solution: def jumpFloor(self, number): # write code here List = [0, 1, 2] while len(List) < number+1: Li原创 2020-07-23 09:13:07 · 141 阅读 · 0 评论 -
剑指offer_字符串_翻转单词顺序列
字符串_翻转单词顺序列# -*- coding:utf-8 -*-class Solution: def ReverseSentence(self, s): # write code here res = list(s.split(" ")) return " ".join(res[::-1])...原创 2020-03-17 20:54:31 · 76 阅读 · 0 评论 -
剑指offer_字符串_左旋转字符串
字符串_左旋转字符串# -*- coding:utf-8 -*-class Solution: def LeftRotateString(self, s, n): # write code here if len(s) < 2: return s n = n%len(s) s = s[n:]...原创 2020-03-17 20:49:32 · 79 阅读 · 0 评论 -
剑指offer_字符串_字符串的排列(有点难)
字符串_字符串的排列(有点难)参考:https://blog.csdn.net/qq_20141867/article/details/80933497https://blog.csdn.net/qq_31715255/article/details/99413860# -*- coding:utf-8 -*-class Solution: def Permutation(se...原创 2020-03-15 17:36:34 · 76 阅读 · 0 评论 -
剑指offer_字符串_替换空格
字符串_替换空格思路:新建列表# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): # write code here res = "" for e in s: if e == " ": ...原创 2020-03-15 17:38:00 · 84 阅读 · 0 评论 -
快排算法
快速排序 def quick_sort(self, data): if len(data) < 2: return data left = self.quick_sort([i for i in data[1:] if i <= data[0]]) right = self.quick_sort([j fo...转载 2020-03-13 22:29:04 · 179 阅读 · 0 评论 -
剑指offer_数组_数组中重复的数字
数组中重复的数字思路:借用列表法。# -*- coding:utf-8 -*-class Solution: # 这里要特别注意~找到任意重复的一个值并赋值到duplication[0] # 函数返回True/False def duplicate(self, numbers, duplication): # write code here ...原创 2020-03-07 16:50:09 · 84 阅读 · 0 评论