摘要: 单向链表: 双向链表: 单向链表的一些理解: 通过定义一个节点类Node来表示链表结点,每个结点是这个类的一个对象 这个类包括一个Node类型的属性next用来保存下一个节点的地址,包括一个属性data用来保存这个节点的数据 如果这个链表是无环的,则最后一个节点的next为null 下面是单向链表的 阅读全文
posted @ 2021-09-08 21:19 菠萝机 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 问题:如何找到一串数据中最大的M个数或者最小的M个数? 答:可以构造一个包含M个数的堆或者直接将这串数据构造成一个堆 大根堆:父节点大于等于两个子节点,可以使用数组构造堆, 1、从下标为1的位置开始存储;第k个位置的父节点:k/2,子节点位置: 2k 和 2k+1 2、从下标为0的位置开始存储,第k 阅读全文
posted @ 2021-09-08 21:18 菠萝机 阅读(33) 评论(0) 推荐(0) 编辑
摘要: leetcode 总结 1.冒泡排序 # 冒泡排序;对相邻的进行比较,把大的往后放,第一轮循环下来可以找到最大的,时间复杂度为O(n^2) def bubble_sort(arr): for i in range(len(arr)): for j in range(len(arr)-1-i): if 阅读全文
posted @ 2021-09-08 21:17 菠萝机 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 顺序查找的时间复杂度最糟为O(n),而二分查找的时间复杂度为O(log n)1、非递归 def binary_search(arr, item): low = 0 high = len(arr)-1 while low<=high: # 当左指针大于右指针的时候,则说明没找到,结束循环 mid = 阅读全文
posted @ 2021-09-08 21:07 菠萝机 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 满二叉树:除叶子节点外,每个节点都有两个子节点 完全二叉树:叶子节点都在最底下两层,并且最后一层的叶子节点都靠左排列,除了最后一层,其它层的每个节点的子节点个数都要为2 完全二叉树有一个好处就是可以直接用数组存储,不需要额外的空间来存储左右叶子结点的引用; 平衡二叉树:左右子树的高度差小于等于1 二 阅读全文
posted @ 2021-09-08 21:07 菠萝机 阅读(84) 评论(0) 推荐(0) 编辑
摘要: leetcode题源:实现strStr() KMP算法的讲解 给定一个text字符串,和一个pattern字符串,找出pattern字符串在text字符串中开始的位置,如果不能匹配到,则返回-1; 在使用普通的双指针进行匹配时,如果匹配失败,则text指针要回到匹配开始位置的下一位置再进行下一轮匹配 阅读全文
posted @ 2021-09-08 21:07 菠萝机 阅读(56) 评论(0) 推荐(0) 编辑