三种情况:当前节点有右子树的话,当前节点的下一个结点是右子树中的最左子节点;当前节点无右子树但是是父节点的左子节点,下一个节点是当前结点的父节点;当前节点无右子树而且是父节点的右子节点,则一直向上遍历,直到找到最靠近的一个祖先节点pN...
我们需要设置一个指针preNode,preNode最开始为None,然后设置两个指针,pNode指向当前节点,pNext指向pNode下一个结点,⓵如果pNext不为空而且pNext的值等于pNode的值,那么就说明出现了重复数字的结...
寻找链表中环的入口结点主要分成三个步骤:首先是设置两个快慢指针,如果快慢指针相遇,则快慢指针必然都在环中;然后从相遇的地方设置一个指针向后遍历并记录走的步数,当这个指针重新指到开始的位置的时候,当前对应的步数就是环中结点的数量k;然后...
引入两个辅助存储空间。一个Dict存储当前出现的字符以及字符出现的次数,一个List存储当前出现字符。然后每次比较List的第一个字符在Dict中对应的次数,如果为1则输出这个字符,如果不为1则弹出这个字符比较下一个字符。&039;&...
这道题的关键也在于讨论清楚情况,把所有可能出现的情况都考虑到。需要注意的是,指数E后面必须跟一个整数,不能没有数,也不能为小数。&039;&039;&039;请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串...
&039;&039;&039;请实现一个函数用来匹配包括&039;.&039;和&039;*&039;的正则表达式。模式中的字符&039;.&039;表示任意一个字符,而&039;*&039;表示它前面的字符可以出现任意次(包含0...
作图画出一个n*n的矩阵,即可看出规律。注意需要得到的向量初始化的时候,初始化的值应该为1。&039;&039;&039;给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1]其中B中的元素B[i]=...
对于一个长度为n的数组里所有的数字都在0到n-1的范围内。查找重复数字的话,首先容易想到,对数组进行排序,然后遍历数组查找重复的数字,这样的时间复杂度为O(nlogn);或者建立一个哈希表,这样实在O(n)的时间查找到,但是空间复杂度...
首先来看比较简单的情况--二叉搜索树的最低公共祖先,对于二叉搜索树而言,每个节点的左子节点都小于这个数,右子节点都大于这个数,因此,我们比较当前节点和需要比较的结点m,n的大小,如果当前节点的值均大于m,n,则在当前节点的左子树继续操...
主要是区分输入和合法性,比如输入一个None,输入一个空字符串"",或者输入的字符串中含有“+”或者“-”,或者输入的字符串中含有除去+—数字的非数字字符,如何段应正常的输出还是报错,需要考虑的全面一些。&039;&039;&0...
将两个数的加法看作两步,第一步是两个数相加但是不进位,第二步是记录之前的两数相加应该进位的地方加上前一个相加但是不进位的数。对于具体的两个不小于0的数m和n,第一步可以看做m和n的异或运算m^n,第二步可以看做m和n的与运算然后左移一...
利用两个函数,一个函数充当递归函数的角色,另一个函数处理终止递归的情况。如果对n连续进行两次反运算,那么非零的n转换为True,0转换为False。利用这一特性终止递归。注意考虑测试用例为0的情况。&039;&039;&039;求1...
递推公式:f[i]=(f[i-1]+m)%i
先置换特殊字符AJQK为数字,排序,然后求出大小王即0的个数,然后求出除去0之外的,数组间的数字间隔(求间隔的时候记得减去1,比如4和5的间隔为5-4-1,表示4和5是连续的数字),同时求间隔的时候需要鉴别是否出现对。最后比较0的个数...
用两个数组来存储骰子点数的每一个总数出现次数。在一次循环中,第一个数组中的第n个数字表示骰子和为n出现的次数。在下一次循环中加入一个新的骰子,此时和为n的骰子出现的次数应该等于上一次循环中骰子点数和为n-1,n-2,n-3,n-4,n...