第 43 页 - 学习
Python最小的k个数

两种方法。第一种方法是基于划分的方法,如果是查找第k个数字,第一次划分之后,划分的位置如果大于k,那么就在前面的子数组中进行继续划分,反之则在后面的子数组继续划分,时间复杂度O(n);第二种方法是可以适用于海量数据的方法,该方法基于二...

Python数组中出现次数超过一半的数字

两种思路。第一种思路,出现次数超过一半的数字,不管如何,必然这个数字位于数组中间的位置,因此可以采用类似于快排的划分的方法,找到位于数组中间的位置的数字,然后在顺序检索是否这个数字出现次数超过一半。第二种思路根据数组的特点,出现次数超...

Python字符串的组合

&039;&039;&039;输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。结果请按字母顺序输出。...

Python字符串的排列

依次取一个元素,然后依次和之前递归形成的所有子串组合,形成新的字符串。

Python二叉搜索树与双向链表

按照左右子树分治,递归实现。根的左边连接左子树的最右边结点,右边连接右子树的最左边结点。

Python复杂链表的复制

注意链表结点进行复制的时候,不能简单地写作pCloned=pNode,这样的话之后对pCloned的操作也会作用在pNode上面,导致操作循环往复。需要重新定一个pCloned=ListNode(0),然后对结点的.val...

Python二叉搜索树的后续遍历序列

根据后续遍历的性质,尾元素必定是树的根,同时小于尾元素的值是左子树,大于尾元素的值为右子树,且序列前半部分均小于尾元素,后半部分均大于尾元素(如果同时存在左右子树的话),可以将序列划分左子树序列和右子树序列,然后递归比较师妹每一段均满...

Python栈的压入、弹出序列

建立一个辅助栈,把push序列的数字依次压入辅助栈,每次压入后,比较辅助栈的栈顶元素和pop序列的首元素是否相等,相等的话就推出pop序列的首元素和辅助栈的栈顶元素,若最后辅助栈为空,则push序列可以对应于pop序列。&039;&0...

Python包含min函数的栈

引入两个栈,一个栈每次push实际的数字,另一个minStack,如果push的数字小于minStack栈顶的数字,push新的数字,繁殖,把栈顶的数字再压入一遍。&039;&039;&039;定义栈的数据结构,请在该类型中实现一个...

Python顺时针打印矩阵

首先需要判断每一步开始是的坐标点是否满足小于行数的一半且小于列数的一半,在最后一圈中,可能出现仅能向右走一行,仅能向右走一行向下走一列,向右走一行向下走一列向左走一行,能走完整一圈,一共四种情况。其中只有能向左走一行必然发生,不必判断...

Python二叉树的镜像

需要判断输入的结点为空或者输入的结点没有子树的情况。

Python树的子结构

多出需要判断指针是不是None,避免访问空指针而造成程序崩溃。

Python合并两个排序的链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。