1.快速排序的思想 (1)分解:先从数列中取出一个元素作为基准元素,以基准元素为标准,将问题分解为两个子序列,使小于或等于基准元素的子序列位于左侧,使大于基准元素的子序列位于右侧。 (2)治理:对两个子序列分别递归调用快…
标签:算法
【LeetCode】974. Subarray Sums Divisible by K 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 前缀和求余 日期 题目地址:https://leetcode.…
leetcode 147. Insertion Sort List
算法分析: 这是一个基于链表的插入排序,同样地设置一个虚拟的头结点vmNode,遍历整个链表时,链表中的每个节点与以vmNode为头节点的链表进行比较,找到插入位置,找到后将该节点插入,最终返回vmNode.next。整…
LeetCode Hard 128 最长连续子序列 Python
def longestConsecutive(self, nums): """ Solution Method 算法:集合 思路: 其实题解的思路挺朴素的,就是将nums转化为集合,然后使得查找时间退化为O1 只在num…
LeetCode:978. Longest Turbulent Subarray - Python
978. 最长湍流子数组 问题描述: 当 A的子数组A[i], A[i+1], ..., A[j]满足下列条件时,我们称其为湍流子数组: 若i <= k < j,当 k为奇数时, A[k] > A[k+…
leetcode-889-Construct Binary Tree from Preorder and Postorder Traversal
Get the pattern from it, 1) We know that in pre-order: [root, left, right], in post-order: [left, right, root]…
leetcode 347. Top K Frequent Elements(优先队列的使用)
算法思路: 首先,将每个数出现的频率以键值对的方式存入HashMap中。创建一个优先队列,队列中的元素是数字和该数字出现的频率组合的信息对,为此,我特地创建了一个信息对的类(C++提供了,java貌似没有提供),不过也挺…
动态规划原理
动态规划原理及重构最优解原理 最优子结构 运用动态规划求解最优化问题第一步 若一个问题的最优解中包含其子问题的最优解,则此问题具有最优解的结构性质。因为使用子问题的最优解构造原问题最优解,所以我们必须确保考察了最优解中用…
分治法 逆序对计数 O(nlgn)
一、逆序对 1. 问题背景 假如有一组电影集合,包括n部电影。某个人对这n部电影的喜欢程度各有高低,根据其喜欢程度对这n部电影进行排名,按照从1到n的方式进行标记,这就形成了一个关于电影的排名表。假设你和一个陌生人各有自…
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2…
LeetCode-3. Longest Substring Without Repeating Characters
问题:给定一个字符串,查找不重复的最长子字符串的长度。 Example 1: Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the …
排列问题(permulation)(算法导论入门经典习题)
问题: 用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要 求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必 太动脑筋。 /*排…