/StudyAlgorithm

算法学习笔记

Primary LanguageJava

基础

chapter1 排序

item1 归并排序

item2 归并排序扩展 求小和

item3 快速排序和荷兰国旗问题

chapter2 链表

Item1_SingleReserve 单链表反转 三个变量

Item2_doubleNodeReserve 双链表反转 两个变量

Item3_printRepeat 打印链表中相等节点数据

Item4_nodeLoopback 判断一个链表是不是回环链表,stack和code方法

Item5_nodePartition 将链表分为前面>k,中间=k.后面>k

Item6_nodeIntersect 判读两个可能有环的链表是否相交

Item7_nodeSort 链表排序

chapter3 二叉树

Item1_recursiveTraversal 递归遍历

Item2_noRecursive 非递归遍历

Item3_widthRecursive 宽度遍历,以及统计最多节点层

Item4_MaxNodes 统计哪一层节点最多

Item5_isBST 判断是否是一颗搜索树

Item6_isCBT 判断是否是一颗完全二叉树

Item7_isFull 判断是否为满二叉树

Item8_isBalance 判断是否是平衡二叉树

Item9_parentNode 寻找最近汇聚节点

chapter4 图

Code1_BFS 图的广度遍历

Code2_DFS 图的深度遍历

Code3_TopologySort 求拓扑排序

Code4_Kruskal 最小生成树的 k算法 priorityQueue

Code5_Prim 最小生成树的 p算法 采用 map、set priorityQueue

Code6_MinRoute 图的最短路径问题 采用map、set

chapter5 前缀树和贪心算法

Code1_TrieTree 前缀树

Code2_LowestLexicography 字典排序

Code3_LessMoneySplitGold 分黄金使用最少的钱

Code4_BestArrange 如何组织可以开最多的会

Code5_IPO 怎么样可以使利益最大化

Code6_MadianQuick 维护两个堆,能够快速的获取中位数

Code7_NQueen N皇后问题

chapter6 暴力递归

Code1_Hanoi 汉罗塔问题

Code2_PrintAllSubSquences 打印字符串所有子序列

Code3_PrintFullArrangement 打印字符串的全排列

Code4_ReverseStackUsingRecursive 递归反转栈

Code6_ConvertToLetterString 将数字字符串转换为字母

Code7_Knapsack 给定两个数组,分别是重量对应价值,bag最大能装重量,求最大能装价值

Code8_CardsInLine 给定一个数组,只能拿左右两边,拿完另一个拿,怎么拿使值最大

Code9_NQueue N皇后问题,位运算

基础提升

chapter 1

Code1_KMP KMP算法

Code2_Manacher Manacher算法 最长回文子串

chapter2

Code1_SlidingWindowsMaxArray 滑动窗口,每次都取出最大值

Code2_MonotonousStack 单调栈,可以直到一个数组中每个数左边和右边第一个大于自己的数

Code3_SonMinMulSum 利用单调栈,求指标

chapter4

Code1_getMax 不用比较符号,实现比大小

Code2_Power 判断一个数是否是2或4的幂

Code3_AddMinusMulDivideByBit 不用+-*/ 实现加减乘除

chapter5

Code1_RobotWalk 机器人行走

Code2_CoinsMin 组成一个数,使用最少硬币

Code3_CartsInLine 先后拿卡牌游戏,怎么拿可以拿到可以拿到最大值

Code4_HorseJump 马踏棋盘游戏

中级提升

chapter1

Code1_CordCoverMaxPoint 一条绳子可以框多少个点

Code2_AppleMinBags 大小为6/8的袋子恰好装下苹果,最少袋子

Code3_ColorLeftRight 所有R比G到起点的距离大

Code4_MaxOneBorderSize 0/1矩阵中,由1围成的最大矩阵

Code5_Rand5ToRand7 用随机生成1-5的方法,生成等概率1-7

Code6_UniqueBST 给你n个节点,请问可以构造多少种二叉树

Code7_NeedParentheses 判断一个括号序列是否有效

chapter2

Code2_MagicOp 从一个数组移动数到另一个数组,使两个数组平均值都增大

Code3_NumToStringWays 数字装换成字符串的方法数

Code4_ParenthesesDeep 括号序列中,最大有效括号数

Code5_StackSortStack 只能用一个辅助栈,使一个无序的栈变有序

Code6_Eat 先手后手吃草,谁会赢

Code7_MaxSumTree 求出从根节点出发,到叶节点,求出最大权重路径

chapter3

Code1_PackingMachine 洗衣机,使衣服平均需要多少轮遍历

Code2_ZigZagPrintMatrix 之字型或对象线打印矩阵

Code3_RotateMatrix 将矩阵旋转90度

Code4_PrintMatrixSpiralOrder 螺旋打印矩阵

Code5_FindNumInSortedMatrix 在从上下,左右有序的矩阵中查数

Code6_TopKTimesRealTime 字符数组中找出出现频率最高的

Code7_SplitNBySM 两个公式,两个公式使字符串增长到n,至少调用几次

Code8_TopKTimes 一个堆结构,永远维护,出现频次最高的k个字符数组

chapter5

Code1_GetFolderTree 将一些字符串生成前缀树

Code2_BSTTODoubleLinkedList 将搜索二叉树变成双向链表

Code3_BiggestSubBSTInTree 最大的子搜索二叉树

Code4_PreAndInArrayToPostArray 前序遍历集合和中序遍历集合求出后续遍历集合

Code5_Light 路灯问题

Code6_SubArrayMaxSum 连续子数组累加和的最大值

Code7_SubMatrixMaxSum 压缩矩阵成数组,求子矩阵的累加和最大值

chapter6

Code1_ChineseNumExpression 将阿拉伯数字转中文表达

Code2_PrintNoInArray 给你n个数的数组,里面数字从1-n找出不在数组中的值

Code3_Kiki 主播人气问题,base case不够解决方案

Code4_CompleteTreeNodeNumber 求出完全二叉树的节点个数

chapter7

Code1_ExpressionNumber 1、0、&、|、^加括号运算得到预期结果的方法

Code2_LongestNoRepeatSubString 最长无重复子串

Code3_EditCost 将一个字符串转成另一个字符串最小花费

Code4_RemoveDuplicateLettersLess 删除重复字符,并且按照最小字典序返回