第 3 页 - python
Python把二叉树打印成多行

引入两个队列。首先把当前层的节点存入到一个队列queue1中,然后遍历当前队列queue1,在遍历的过程中,如果节点有左子树或右子树,依次存入另一个队列queue2。然后遍历队列queue2,如此往复。&039;&039;&039;...

Python对称的二叉树

分为递归和非递归的两种方式,思想是一样的。主要就是把叶子节点的None节点也加入到遍历当中。按照前序遍历二叉树,存入一个序列中。然后按照和前序遍历对应的先父节点,然后右子节点,最后左子节点遍历二叉树,存入一个序列。如果前后两个序列相等...

Python二叉树的下一个结点

三种情况:当前节点有右子树的话,当前节点的下一个结点是右子树中的最左子节点;当前节点无右子树但是是父节点的左子节点,下一个节点是当前结点的父节点;当前节点无右子树而且是父节点的右子节点,则一直向上遍历,直到找到最靠近的一个祖先节点pN...

Python删除链表中重复的结点

我们需要设置一个指针preNode,preNode最开始为None,然后设置两个指针,pNode指向当前节点,pNext指向pNode下一个结点,⓵如果pNext不为空而且pNext的值等于pNode的值,那么就说明出现了重复数字的结...

Python链表中环的入口结点

寻找链表中环的入口结点主要分成三个步骤:首先是设置两个快慢指针,如果快慢指针相遇,则快慢指针必然都在环中;然后从相遇的地方设置一个指针向后遍历并记录走的步数,当这个指针重新指到开始的位置的时候,当前对应的步数就是环中结点的数量k;然后...

Python字符流中第一个不重复的字符

引入两个辅助存储空间。一个Dict存储当前出现的字符以及字符出现的次数,一个List存储当前出现字符。然后每次比较List的第一个字符在Dict中对应的次数,如果为1则输出这个字符,如果不为1则弹出这个字符比较下一个字符。&039;&...

Python表示数值的字符串

这道题的关键也在于讨论清楚情况,把所有可能出现的情况都考虑到。需要注意的是,指数E后面必须跟一个整数,不能没有数,也不能为小数。&039;&039;&039;请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串...

Python正则表达式匹配

&039;&039;&039;请实现一个函数用来匹配包括&039;.&039;和&039;*&039;的正则表达式。模式中的字符&039;.&039;表示任意一个字符,而&039;*&039;表示它前面的字符可以出现任意次(包含0...

Python构建乘积数组

作图画出一个n*n的矩阵,即可看出规律。注意需要得到的向量初始化的时候,初始化的值应该为1。&039;&039;&039;给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1]其中B中的元素B[i]=...

Python数组中重复的数字

对于一个长度为n的数组里所有的数字都在0到n-1的范围内。查找重复数字的话,首先容易想到,对数组进行排序,然后遍历数组查找重复的数字,这样的时间复杂度为O(nlogn);或者建立一个哈希表,这样实在O(n)的时间查找到,但是空间复杂度...

Python树中两个节点的最低公共祖先

首先来看比较简单的情况--二叉搜索树的最低公共祖先,对于二叉搜索树而言,每个节点的左子节点都小于这个数,右子节点都大于这个数,因此,我们比较当前节点和需要比较的结点m,n的大小,如果当前节点的值均大于m,n,则在当前节点的左子树继续操...

Python把字符串转换成整数

主要是区分输入和合法性,比如输入一个None,输入一个空字符串"",或者输入的字符串中含有“+”或者“-”,或者输入的字符串中含有除去+—数字的非数字字符,如何段应正常的输出还是报错,需要考虑的全面一些。&039;&039;&0...

Python不用加减乘除做加法

将两个数的加法看作两步,第一步是两个数相加但是不进位,第二步是记录之前的两数相加应该进位的地方加上前一个相加但是不进位的数。对于具体的两个不小于0的数m和n,第一步可以看做m和n的异或运算m^n,第二步可以看做m和n的与运算然后左移一...

Python求1+2+...+n

利用两个函数,一个函数充当递归函数的角色,另一个函数处理终止递归的情况。如果对n连续进行两次反运算,那么非零的n转换为True,0转换为False。利用这一特性终止递归。注意考虑测试用例为0的情况。&039;&039;&039;求1...

Python扑克牌的顺子

先置换特殊字符AJQK为数字,排序,然后求出大小王即0的个数,然后求出除去0之外的,数组间的数字间隔(求间隔的时候记得减去1,比如4和5的间隔为5-4-1,表示4和5是连续的数字),同时求间隔的时候需要鉴别是否出现对。最后比较0的个数...

Python n个骰子的点数

用两个数组来存储骰子点数的每一个总数出现次数。在一次循环中,第一个数组中的第n个数字表示骰子和为n出现的次数。在下一次循环中加入一个新的骰子,此时和为n的骰子出现的次数应该等于上一次循环中骰子点数和为n-1,n-2,n-3,n-4,n...

Python左旋转字符串

首先需要写一个reverse函数,把任何输入的字符串完全翻转。然后根据题目中给出的左旋转字符串的个数n,用全字符串长度length减去旋转字符串个数n,求得对于新的字符串应该在哪一位进行旋转,然后分别旋转前[:length-n]子串和...

Python翻转单词顺序

首先需要写一个reverse函数,把任何输入的字符串完全翻转。然后从前往后依次遍历新字符串,如果遇到空格,就把空格前的字符串用reverse翻转,添加空格,继续遍历。需要注意的是,如果新字符串结尾不是空格,当遍历到结尾的时候,前一个空...

Python和为s的连续正数序列

设定两个指针,先分别指向数字1和数字2,并设这两个指针为small和big,对small和big求和,如果和大于目标值,则从当前和中删除small值,并把small值加一,如果和小于目标值,则把big值加一,再把新的big值加入和中。...

Python和为s的两个数字

设定两个指针,一个指向数组的起点,一个指向数组的终点,然后对两个数字求和,如果和大于目标值,则把后一个指针前移,如果和小于目标值,则把前一个指针后移。两个指针交汇的时候如果还没找到,就终止操作。&039;&039;&039;输入一个...

Python数组中只出现一次的数字

任何一个数字异或他自己都等于0,0异或任何一个数都等于那个数。数组中出了两个数字之外,其他数字都出现两次,那么我们从头到尾依次异或数组中的每个数,那么出现两次的数字都在整个过程中被抵消掉,那两个不同的数字异或的值不为0,也就是说这两个...

Python判断平衡二叉树

基于二叉树的深度,再次进行递归。以此判断左子树的高度和右子树的高度差是否大于1,若是则不平衡,反之平衡。&039;&039;&039;输入一棵二叉树,判断该二叉树是否是平衡二叉树。&039;&039;&039;-*-cod...

Python二叉树的深度

利用递归实现。如果一棵树只有一个结点,那么它的深度为1。递归的时候无需判断左右子树是否存在,因为如果该节点为叶节点,它的左右子树不存在,那么在下一级递归的时候,直接return0。同时,记得每次递归返回值的时候,深度加一操作。&03...

Python数字在排序数组中出现的次数

二分查找的扩展。可以构造两个函数。第一个函数查找目标数字出现的最前面的位置,先使用二分查找找到该数字,如果该数字的index>0而且该数字前面一个数字等于k的话,那么就令end=middle-1,继续二分查找。对于第二个函数...

Python数组中的逆序对

这道题可以这么想,我们要找到数组中的逆序对,可以看做对数据进行排序,需要交换数组中的元素的次数,但是防止相同大小的元素发生交换,因此需要选择一个稳定的排序方法,记录发生交换的次数。那么,基于比较的稳定的排序方法中,最快的方法就是归并了...

Python第一个只出现一次的字符

先遍历一遍字符串,用一个hash表存放每个出现的字符和字符出现的次数。再遍历一遍字符串,找到hash值等于1的输出即可。&039;&039;&039;在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找...

Python丑数

空间换时间。建立一个长度为n的数组,保存这n个丑数。在进行运算的时候,某个位置需要求得丑数一定是前面某个丑数乘以2、3或者5的结果,我们分别记录之前乘以2后能得到的最大丑数M2,乘以3后能得到的最大丑数M3,乘以5后能得到的最大丑数M...

惪特博客
  • 文章总数:
    18474 篇
  • 评论总数:
    53170 条
  • 标签总数:
    8841 个
  • 总浏览量:
    19576706 次
  • 最后更新:
    10月12日

最多点赞

随便看看

标签TAG