首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构+算法
Forlogen
创建于2021-07-05
订阅专栏
有关数据结构和算法的基础介绍,以及LeetCode相关题目
等 1 人订阅
共204篇文章
创建于2021-07-05
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
剑指offer 61 - 扑克牌中的顺子 - python
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。数组长度为 5数组的数取值为 [0, 13] .首先需要知道大小王(0)有几个,因为0小于任何正...
剑指offer 58 - 反转单词顺序列 - python
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。解释...
剑指offer 32 Ⅲ -从上到下打印二叉树 - python
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。因此,在保存每层结果时,设置index来判断当前层是偶数层还是奇数层,如果是偶数层直接保存;否则使用反转结果后再保存。t.append(...
剑指offer - 二叉搜索树的后序遍历序列 - python
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为...
剑指offer 32 Ⅱ - 从上到下打印二叉树 - Python
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。根据题目的描述可知,打印的顺序即层序遍历的顺序,每一层的输出作为最后结果的一个元素。t.append(node.if node.left: nextLayer.append(node.if node.ri...
剑指offer - 二叉树的下一个结点 - python
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。如果它存在右子树,说明它是子树的父结点,下一个节点在其右子树中。# self.# self.# self.# self.if pNode.pNod...
剑指offer - 删除链表中重复的结点 - python
题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 链表法:首先遍历链表获取所有结点的val,然后移除所有个数大于1的值,接着利用处理后的结果构造新的链表,最后返回新链表的头结点即可。指针法构建一个新节点连接到给定链表,设置...
剑指offer 31 - 栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的...
剑指offer 55 Ⅱ - 平衡二叉树 - python
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。返回 true 。返回 false 。平衡二叉树指二叉树的每个节点的左右子树的高度差的绝对值不超过1。# self.# self.# self.retu...
剑指offer 55 - 二叉树的深度 - python
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。这道题和剑指offer - 二叉树中和为某一值得路径 - python做法是类似的,只不过少了些判断条件。从根节点开始深度优先遍历所有可能的路经,并使用全局变量...
剑指offer 34 - 二叉树中和为某一值的路径 - python
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。直接套用回溯法求解模版即可,没啥好说的。整数可以分为当前值和累加值的和,因此,可以使用递归判断当前的树中是否存在路径使得累加值numbers + cu...
剑指offer 32 - Ⅰ- 从上往下打印二叉树 - python
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。使用二叉树的层序遍历和队列先进先出的特点解决即可。r.append(root.if root.q.append(root.if root.q.append(root.
剑指offer 27 - 二叉树的镜像 - python
请完成一个函数,输入一个二叉树,该函数输出它的镜像。所谓镜像结构,即当前节点的左右孩子进行互换,直到到达叶节点为止。因为,不断的以左孩子节点和右孩子节点当作root进行子树互换,可采用递归。# Definition for a binary tree node.# self.# ...
剑指offer - 树的子结构 - python
输入两棵二叉树A,B,判断B是不是A的子结构。若A和B中有一棵为空则两者之间必不存在结构,返回False若A和B均不为空,则要先在A中找到和B根节点相同的节点,然后判断它们的子节点是否相同,直到到达A或B的叶子节点根据二叉树本身的性质,整个过程可以使用递归完成 先序遍历法:如果B...
剑指offer 38 - 字符串的排列 - python
输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。直接使用回溯模版解题即可。另外由于字符串中可以存在相同的字符,可以先将字符串按字典序排序,然后在回溯过程中加入相应的剪枝操作,从而减少回溯的过程。r.append(''.pa...
Leetcode 13 14
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.For example, two is written as II in Roman numeral, just t...
1126:打印极值点下标
题目来源: 2008年北京大学方正实验室计算机研究生机试真题题目描述: 在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。输入: 每个案例的输入如下: 有2×n+1行输入:第一行是要处理的数组...
剑指offer 11 -旋转数组中最小数字 - python
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。{1,2,3,4,5}的一个旋转,该数组的最小值为1。给出的所有元素都大于0,若数组大小为0,请返回0。线性搜索: 根据题目要求分别考虑数组为空、数组只有...
剑指offer 49 - 丑数 - python
我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。1 是丑数。n 不超过1690。M。M的结果中,最小的那个数。事实上,我们不需...
剑指offer 25 - 合并两个排序的链表 - python
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。根据题目的描述可知,给定的两个链表本身就是递增有序的。..p.val < q.p.val<q...q.val < p.q.val<p.# Definition for singly-lin...
下一页