最长递增子串的长度
摘要:def binary_search(nums,key): if len(nums)<1: return -1 high=len(nums)-1 low=0 while low<=high: mid=(low+high)//2 if low<=high and nums[mid]>key: high=
阅读全文
复杂链表的复制
摘要:解题思路:思路:第一步在原链表的基础上复制节点,将节点复制在原节点的后面。第二步复制随机节点。 第三步将新旧链表分离。 代码如下:
阅读全文
二叉排序数转化双向链表
摘要:解题思路:中序遍历是有序的。使用了一个指针来保存链表的最后的节点。每次中序遍历到了根节点,就把根节点添加到了中序遍历的链表的末尾。这样遍历结束就能得到了一个中序有序的链表。最后再利用末尾指针逆序找到头结点即可。 代码如下:
阅读全文
字符串的全排列
摘要:解体思路::将求字符串的全排列分解为两步: 第一步是确定第一个位置的字符,就是第一个位置与后边的所有字符进行交换。 第二步,就是对除了第一个位置的后边所有位置的字符进行相同处理;直至剩下一个字符,打印; 代码如下:
阅读全文
合并k个有序数组
摘要:给定K个有序数组,每个数组有n个元素,想把这些数组合并成一个有序数组 可以利用最小堆完成,时间复杂度是O(nklogk),具体过程如下: 创建一个大小为n*k的数组保存最后的结果创建一个大小为k的最小堆,堆中元素为k个数组中的每个数组的第一个元素重复下列步骤n*k次:每次从堆中取出最小元素(堆顶元素
阅读全文
LeetCode子集问题
摘要:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(子集当中不包括重复的元素) 代码如下: 输出如下: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(子集当中包括重复的元素) 代码如下: 输出如下:
阅读全文
链表快速排序
摘要:class Node: def __init__(self, x, next=None): self.value=x self.next=next def Qsort(head, tail): if head==None or tail==None or head==tail: return first=head ...
阅读全文
树的非递归遍历
摘要:def pre_order_stack(self,root): #堆栈实现前序遍历(非递归) if not root: return myStack = [] node = root while myStack or node: while node: #从...
阅读全文
快速排序非递归实现
摘要:def quick_sort(arr): ''''' 模拟栈操作实现非递归的快速排序 ''' if len(arr) index + 1: stack.append(r) stack.append(index + 1) def partition(arr, start, end): # 分区操作,返回基...
阅读全文
python实现图的遍历(递归和非递归)
摘要:class graph: def __init__(self,value): self.value=value self.neighbors=None # 图的广度优先遍历 # 1.利用队列实现 # 2.从源节点开始依次按照宽度进队列,然后弹出 # 3.每弹出一个节点,就把该节点所有没有进过队列的邻接点放入队列 # 4.直到队列变空 from queu...
阅读全文