数据结构
weixin_37763484
数据挖掘 图像\文本\结构化数据处理
展开
-
topk问题 基于快排解法
首先来看快排的基本代码,在最后一行的地方,已经获得了 i,此时arr数组中的前 i 个 元素就是数组中的最小元素,接下来,以找前k个最小元素为例,if __name__ == "__main__": def fast_sort(arr, left, right): if left < right: i = left j = right key = arr[left]原创 2021-08-23 16:09:52 · 196 阅读 · 1 评论 -
链表归并排序 数组归并排序
这两个题经常在面试中遇到,leetcode上也有解答,但是感觉有些不是很清楚,因此整理如下。链表归并排序主要就是找到mid,然后递归调用,得到left和right,再合并left和right;在sortlist中调用自己,然后进行归并,可以写成merge函数class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def sor原创 2021-08-17 21:16:17 · 109 阅读 · 0 评论 -
python二分查找模板
经常会遇到需要进行二分查找的情境,python中的bisect很好用,当无法使用这个库的时候,可以自己手动实现。下面的代码片段实现了“查找target第一次出现的位置”,以及“第一个大于target的值的位置”两个功能,如果要找target最后一次出现的位置,可以在“第一个大于target的值的位置”的基础上减一。如果第一次查找11,left和right都等于7(即数组的长度,因为11不存在于数组arr中),需要手动判断。下面的代码适用于剑指offer《在排序数组中查找数字》import bisec原创 2021-08-10 22:08:33 · 228 阅读 · 1 评论 -
二叉树遍历 非递归 简单方法 python
看到很多相关解法,感觉有些难以理解,发现了下面这个文章,分享给大家。里面的主要思路就是放一个空节点,利用空节点来完成其它管理工作。统一框架 方便理解。#前序class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: res = [] stack = [] if root: stack.append(root) whi转载 2021-05-10 20:55:29 · 119 阅读 · 0 评论 -
python重构二叉树
前序+中序,中序+后序均可以构造出原本的树结构;前序加后序无法构造唯一的树结构。假设节点是这样的:class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None假设树是这样的:root=TreeNode(1)root_1_...原创 2019-04-06 15:25:48 · 191 阅读 · 0 评论