随笔分类 - 刷题
摘要:题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 思路 二叉搜索树的中序遍历是一个递增数列。因此在中序遍历的过程中计数即可找到第k小的节点。 代码 # -*- coding:utf-8 -*- # class
阅读全文
摘要:题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路(1 自己完成的哦😯 层次遍历,遍历的时候将层数加在队列里。
阅读全文
摘要:题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路(参考 1.只要pRoot.left和pRoot.right是否对称即可 2.左右节点的值相等且对称子树(left.left, right.right );(left.rig
阅读全文
摘要:题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 首先知道中序遍历的规则是:左根右,然后作图 1.若当前节点有右子树,下一节点为右子树的最左节点2.若无右节点,则下一节点为第一个为其父节点左孩子的父
阅读全文
摘要:题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是
阅读全文
摘要:矩阵中的路径题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d
阅读全文
摘要:题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路 链表为排序链表,则可以设置两个指针前后同时移动,同时判断后指针的下一节点是否和它相同。 若相同则循环删除,最后
阅读全文
摘要:题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路(参考) 1.首先确定链表中是否存在环 方法: 设置快慢指针,快指针每次走两步,慢指针走一步。链表中无环则最终快指针为None,若有环快指针和慢指针一定相交。 证明: 设置快慢指针fast和low,fast每次
阅读全文
摘要:题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4]
阅读全文
摘要:题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 代码:
阅读全文
摘要:题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符。代码:看到题目
阅读全文
摘要:题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 自己实现 class Solution:
阅读全文
摘要:题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均
阅读全文
摘要:题目描述 给定一个数组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[i]的值可以看作下图的矩阵中每行的乘积。 下三角用连乘可以
阅读全文
摘要:题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。解决代码:自己想的有点麻烦和复杂化了,有一个规律是两个数距离越远乘积越小。 # -*- coding:ut
阅读全文
摘要:题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快
阅读全文
摘要:题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解析 “平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 自己提交代码: 思路:根据求树深度的方法,求当前节点左右子树最大深度并判
阅读全文
摘要:题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 自己提交代码: # -*- coding:utf-8 -*- class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(se
阅读全文
摘要:参考链接:https://segmentfault.com/a/1190000016674584 前言 二叉树的前中后序遍历是面试考察中一个重要的点。而递归方法是最简单实现的,所以要信手拈来。非递归方法更要加以掌握。前序就是根-左-右,中序是左-根-右,后序是左-右-根。有两种通用的遍历树的策略:深
阅读全文
摘要:利用二叉树的层次遍历:用计数判断层数是否发生改变 class Solution: def TreeDepth(self, pRoot): # write code here if pRoot==None: return 0 quene = [pRoot] count = 0 nextcount =
阅读全文

浙公网安备 33010602011771号