234-回文链表

来源:力扣 (LeetCode) 链接:234. 回文链表 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 请判断一个链表是否为回文链表。 示例 1: 输入:1->2 输出:false 示例 2: 输入:1->2->2->1 输出:true ... 阅读更多

排序算法五:堆排序

一、堆排序原理 通过最大堆的性质可以知道:一个堆中最大的元素总是在堆顶的,即数组下标 0 的位置。基于这一点,我们可以每次都把堆中的最大值提取出来,放到当前数组的后面。然后重新构建最大堆,重复这个过程,以此来完成一个数组的排序。 例如,一个已知的最大堆为: 把最大的元素 16 提取出来,放到最后。然后重新建 ... 阅读更多

数据结构之堆

一、堆 堆是一种数据结构,通常通常所说的堆即二叉堆。二叉堆是一个数组,可以被看成一个完全二叉树,如下图所示: 他在数组中的表现形式为: 通过数组很容易得到每个父节点和其子节点的关系,假设数组的起始下标为 0,那么有:

因此可以直接在程序 ... 阅读更多

排序算法七:计数排序

一、计数排序 其基本思想为:假设 n 个输入的元素中的每一个都是在 0 到 k 之间的一个整数,对于每一个输入元素 x,确定小于 x 的元素个数,直接把 x 放在它输出的数组中的位置上。例如有 17 个元素小于 x,则 x 就应该在数组的第 18 个位置上。当有几个元素相同时,这一方案就要略作修改,不能都放在同一个位置上。 计数排序需 ... 阅读更多

2-两数相加

来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/add-two-numbers 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方 ... 阅读更多

581-最短无序连续子数组

来源:力扣 (LeetCode) 链接:581. 最短无序连续子数组,著作权归领扣网络所有。 一、题目描述 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 你找到的子数组应是最短的,请输出它的长度。 示例 1: 输入: [2, 6, 4, 8 ... 阅读更多

113-路径总和 II

来源:力扣 (LeetCode) 链接:113. 路径总和 II 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明:叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及 ... 阅读更多

53-最大子序和

来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/maximum-subarray/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 (子数组最少包含 ... 阅读更多

543-二叉树的直径

来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/diameter-of-binary-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任 ... 阅读更多

数据结构之二叉搜索树

一、二叉搜索树 1.1 什么是二叉搜索树 算法导论中对二叉搜索树 (Binary Search Tree, 简称 BST) 的定义: 设 x 是二叉搜索树中的一个节点,如果 y 是 x 左子树中的一个节点,那么 y.key<=x.key 。如果 y 是 x 右子树中的一个节点,那么 y.key>=x.key 。 以下两棵 ... 阅读更多