![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 91
zxzxin
分享、总结 C++、Java、算法 等技术
展开
-
贪心法练习-(Poj1328,Poj1042,最优服务次序,汽车加油问题,删数问题)
目录Poj1328–Radar InstallationPoj1042–Gone Fishing最优服务次序汽车加油问题删数问题 Poj1328–Radar Installation题目链接:Poj1328题目大意: 就是给你n个岛,在x轴的上方,要你在x轴上选择最少的雷达数覆盖这n个岛,雷达的范围是d,输入n,d,并给出n个岛的(x,y)坐标,求...原创 2018-04-25 10:35:43 · 577 阅读 · 0 评论 -
贪心算法小总结--例题(活动安排问题,选择不相交区间,乘船问题,,背包问题)
目录贪心法的概念贪心法的性质活动安排问题乘船问题选择不相交区间背包问题 贪心法的概念 贪心算法是一种求解组合优化问题的算法设计技术,其求解过程由一系列决策构成每一步决策仅依赖于某种局部优化的性质。 和动态规划算法不同,贪心算法在做决策时候不必考虑所有子问题的选择结果。 贪心法的性质 贪心选择性质最优子结构性质 贪心...原创 2018-04-24 17:01:12 · 1418 阅读 · 0 评论 -
回溯法四个习题小练-(子集和问题,最小重量机器设计问题,运动员最佳配对问题,罗密欧与朱丽叶的迷宫问题)
目录子集和问题最小重量机器设计问题运动员最佳配对问题罗密欧与朱丽叶的迷宫问题 子集和问题问题描述解析 注意一下进入左右子树的条件,记录一个剩下的总的和,当前的和加上剩下的和大于bestSum的时候才进入右子树,然后用回溯法求解即可。import java.io.BufferedInputStream;import java.util.Sc...原创 2018-04-23 20:39:21 · 1819 阅读 · 0 评论 -
回溯法小总结+四个小例题(装载问题,01背包,n后,最大团,m着色)
目录回溯法的基本策略回溯法的解空间回溯法基本思想回溯法解题步骤递归回溯和迭代回溯子集树和排列树装载问题01背包问题回溯法求解n后问题图的最大团问题图的m着色问题 回溯法的基本策略 策略: 回溯法在问题的解空间树中,按深度优先搜索,从根节点出发搜索解空间。 算法搜索至某一结点时,先判断该结点是否包含问题的解,如果肯定不包含,则跳过,对以该...原创 2018-04-22 18:23:03 · 3972 阅读 · 2 评论 -
二分查找的总结(6种变形)
二分查找的总结普通的二分查找普通二分查找的另一种写法第一个 = key 的,不存在返回 -1第一个 >= key 的第一个 > key 的 最后一个 = key 的 ,不存在返回 - 1最后一个 <= key 的 最后一个 < key 的完原创 2018-09-13 00:17:16 · 4596 阅读 · 6 评论 -
剑指Offer第七天(37~42)
原题链接:第一题 : 数字在排序数组中出现的次数第二题 : 二叉树的深度第三题 : 平衡二叉树第四题 : 数组中只出现一次的数字第五题 : 和为S的连续正数序列第六题 : 和为S的两个数字 第一题 : 数字在排序数组中出现的次数题目 : 统计一个数字在排序数组中出现的次数。解析 : 很容易想到要找到两个端点的下标,然后通过下标之间的关系确定...原创 2018-05-17 22:08:16 · 232 阅读 · 0 评论 -
剑指Offer刷题小结--六(31~36)
原题链接:第一题:整数中1出现的次数(从1到n整数中1出现的次数)第二题:把数组排成最小的数第三题:丑数第四题:第一个只出现一次的字符第五题:数组中的逆序对第六题:两个链表的第一个公共结点 第一题:整数中1出现的次数(从1到n整数中1出现的次数)题目: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~1...原创 2018-04-16 09:51:31 · 234 阅读 · 0 评论 -
剑指Offer刷题小结--五(25~30)
原题链接第一题:复杂链表的复制第二题:二叉搜索树与双向链表第三题:字符串的排列第四题:数组中出现次数超过一半的数字第五题:最小的K个数第六题:连续子数组的最大和 第一题:复杂链表的复制题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不...原创 2018-04-05 22:03:52 · 327 阅读 · 0 评论 -
剑指Offer刷题小结--四(19~24)
原题链接第一题:顺时针打印矩阵第二题:包含min函数的栈第三题:栈的压入、弹出序列第四题:从上往下打印二叉树第五题:二叉搜索树的后序遍历序列第六题:二叉树中和为某一值的路径 第一题:顺时针打印矩阵题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14...原创 2018-04-02 19:22:36 · 226 阅读 · 0 评论 -
剑指Offer刷题小结--三(13~18)
原题链接第一题:调整数组顺序使奇数位于偶数前面第二题:链表中倒数第k个结点第三题:反转链表第四题:合并两个排序的链表第五题:树的子结构第六题:二叉树的镜像 第一题:调整数组顺序使奇数位于偶数前面题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之...原创 2018-04-01 22:33:17 · 543 阅读 · 0 评论 -
剑指Offer刷题小结--二(7~12)
原题链接第一题:斐波那契数列第二题:跳台阶第三题:变态跳台阶第四题:矩形覆盖第五题:二进制中1的个数第六题:数值的整数次方 第一题:斐波那契数列题目: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39解析: 注意一下不要递归就好,直接输出斐波那契数列的第n项原创 2018-04-01 12:30:46 · 200 阅读 · 0 评论 -
剑指Offer刷题小结--一(1~6)
原题链接第一题:二维数组中的查找第二题:替换空格第三题:从尾到头打印链表第四题:重建二叉树第五题:用两个栈实现队列第六题:旋转数组的最小数字第一题:二维数组的查找题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序。请完成一个函数,输入 这样的一个二维数组和一个整数,判断数组中是否含有该整数。解析...原创 2018-03-31 23:11:03 · 451 阅读 · 0 评论 -
最大值减去最小值小于等于aim 的子数组数量(单调队列(最大值和最小值更新结构))
最大值减去最小值小于等于aim 的子数组数量(单调队列(最大值和最小值更新结构))注意: 子数组必须是下标连续的,而且i ~ i自己也算一个子数组。解析 这个题目也是使用单调队列(窗口内更新最大值和最小值)的结构来做,如果不懂单调队列先看这个博客。先准备两个双端队列,分别是最大值更新结构和最小值更新结构 :先生成两个双端队列qmax和qmin,当子数组为arr[L…...原创 2018-08-11 17:24:38 · 530 阅读 · 0 评论 -
将单链表按某值划分成左边小,中间相等,右边大的形式
将单链表按某值划分成左边小,中间相等,右边大的形式普通方法,将链表节点放到数组然后partition进阶方法,将链表划分成三个子链表,然后合并 普通方法,将链表节点放到数组然后partition 这个方法比较简单,直接将链表中的值保存到一个数组中,然后按照荷兰国旗的划分方式,将数组划分成左边小于那个数,中间等于那个数,右边大于那个数的形式,(荷兰国旗问题用于快速排序中的pa...原创 2018-07-17 13:30:14 · 1629 阅读 · 0 评论 -
集合(Set)和映射(Map)基础总结
目录BiMap : 双向Map(键与值都不能重复 unique - value map)Multimap(注意是小写) key - value 注意 : key 可以重复Multiset,无序,可重复 .count() HashMultiset 函数式编程 : 解耦,过滤器 : 只过滤我们要的东西 Function,filter双键的Map : –>Table –&g...原创 2018-04-11 09:24:45 · 699 阅读 · 1 评论 -
优先队列和堆的总结
目录容器的同步容器的只读设置Queue,Stack,Collections工具类,Enumeration迭代器的使用 容器的同步 线程同步 使用Collections 管理同步容器 synchronizeList(),synchronizeSet(),synchronizeMap(); public class Demo01 { ...原创 2018-04-11 00:02:13 · 878 阅读 · 0 评论 -
Hash和Hash表总结
目录通过内置数组,实现Map容器通过LinkList实现容器以及快速hashCode实现查找用HashMap实现一个小栗子(统计单词出现的次数)一些其他Map的使用说明 这里先给出两个实体类,等下Map实现中要用到//Map的辅助类class Entry{ //条目,入口,进入 public Object key; //键对象 publ...原创 2018-04-09 22:04:11 · 832 阅读 · 0 评论 -
各种排序算法总结(全面)
目录冒泡排序改进的冒泡排序(鸡尾酒排序)选择排序插入排序二分插入排序希尔排序快速排序归并排序堆排序计数排序基数排序桶排序 基本概要 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(...原创 2018-04-05 20:28:39 · 27688 阅读 · 6 评论 -
链表、栈,队列的总结与实现
基本操作(1).自己实现的MyLinkList尾插法建立单链表头插法建立单链表 在某个索引位置插入一个值删除某个索引位置上的元素删除某一指定的元素检查链表中是否含有 某个元素获取某个元素的下标返回链表的长度打印输出整个链表(2).按照JDKLinkList的源码实现MyLinkList(3).按照JDKArrayList的源码实现MyArrayList...原创 2018-04-04 00:31:16 · 617 阅读 · 0 评论 -
矩阵相关操作和矩阵快速幂
矩阵相关操作和矩阵快速幂矩阵基本运算以及快速幂模板POJ3070-Fibonacci题解Hdu1757-A Simple Math ProblemCodefroces-185A- Plant矩阵基本运算以及快速幂模板先看一下矩阵的乘法规则:直接给出一个模板题,直接包含了基本的乘法和求幂,求幂的详细解释,可以看这篇乘法快速幂。题目链接题目注意:矩阵的乘法必须满足第一...原创 2018-09-23 20:42:57 · 586 阅读 · 0 评论 -
ACM常用模板(+模板题)(基础)
目录大数二分枚举排列子集生成n皇后回溯并查集树状数组KMP,Sunday,BM01背包,完全背包最长(不)上升或下降子序列最长公共子序列拓扑排序欧拉路径和回路搜索最小生成树最短路GCD和LCM埃拉托斯特尼筛法唯一分定理扩展欧几里得欧拉函数快速幂矩阵快速幂 说明 虽然只打了一年的ACM,现在已经离开ACM赛场了,但是在ACM中一些...原创 2018-04-08 17:15:03 · 21761 阅读 · 7 评论 -
单调栈介绍以及构造数组的MaxTree问题
构造数组的MaxTree问题(单调栈和堆解决)单调栈介绍使用单调栈解决此题使用堆解决此题完整测试代码 单调栈介绍单调栈最初解决的问题就是寻找一个数组中 ,每一个数的左右两边离它最近的数。遍历一个数组,如果栈为空或者栈顶比当前数大(或者相等,相等的话就多个下标对应一个值),就把当前数入栈;如果栈顶比当前数小,那么就处理这个栈顶,即这个栈顶右边第一个比它大的数就是当...原创 2018-08-13 14:39:00 · 755 阅读 · 0 评论 -
子数组累加和为aim(小于等于aim)的三个问题
子数组累加和为aim(小于等于aim)的三个问题累加和等于aim的最长子数组的长度(数组可+,-,0);累加和等于aim的最长子数组的长度(数组+)(只有正数);累加和小于等于aim的最长子数组的长度(数组可+,-,0);累加和等于aim的最长子数组的长度(数组可+,-,0)这个题目使用HashMap来存储前面出现过的累加和的下标,具体过程如下: 使用变量sum表示从...原创 2018-08-12 10:59:59 · 673 阅读 · 0 评论 -
分支限界法总结--例题(01背包,最大团,单源最短路径,装载问题,布线问题)
目录分支限界法剪枝搜索策略(广度搜索)与算法框架01背包问题最大团单源最短路径装载问题布线问题 分支限界法剪枝搜索策略(广度搜索)与算法框架 基本思想 分支限界法与回溯法求解目标不同,回溯法的求解目标是找出解空间中满足约束条件的所有解,而分支限界法的求解目标是找出满足约束条件的一个解,或者是在满足约束条件的解中找出使某一个目标函数值达到极大或者极...原创 2018-04-28 10:29:17 · 16358 阅读 · 0 评论 -
分治法小总结--例题(棋盘覆盖问题,归并排序,快速排序,循环赛日程表,整数因子分解,半数集)
目录分治法基本思想分治法的使用前提分治法的解题步骤分治法的时间复杂度棋盘覆盖问题归并排序和快速排序循环赛日程表整数因子分解半数集 分治法基本思想 相关的基本知识: 就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 分治法的设计思想是:将一个...原创 2018-04-28 21:34:01 · 2412 阅读 · 0 评论 -
二叉树之Morris遍历
二叉树神级遍历方法(Morris遍历)递归理解以及morris遍历由morris遍历改成前序遍历由morris遍历改成中序遍历由morris遍历改成后续遍历完整测试代码 递归理解以及morris遍历 private static void process(Node head){ if(head == null)return; Syste...原创 2021-03-03 22:51:28 · 421 阅读 · 0 评论