首页 > 其他分享 >Data structure and algorithm-Two

Data structure and algorithm-Two

时间:2023-08-28 22:57:10浏览次数:48  
标签:递归 algorithm 重复 优化 算法 数组 排序 Data structure

  1. B树
     

     

       

     


     





























  2.  

     




     

     

     

     

     

     

       扩容

     

     

     


     

     

     

     

     

     

     

  3.  找出不含重复字符的最长字串的长度

  4.  

    字母异位词分组
     
     

     优化
    用一个长度26的整数数组来标识

     ArrayKey的构造方法

     




     

  5.  

    判断是否存在重复元素

     

     借鉴HashSet后的小优化版

     put 自带一个返回值,返回的是添加前原位置的元素,若原位置为空,则返回null 



  6. 添加,若遇到重复元素,则在集合中删除,最后集合中只剩下没有重复的那个元素

     


    效率不高
    异或(异为1,同为0) 

     

    所有数字进行异或,相同的数字异或后为0,而0与原数字异或后的结果是数字本身

  7.  

    找出段落中出现次数最多的单词

     

     

     利用流找到最大频率

     



    λ表达式缺点:运行效率不高


    正则表达式效率也不高

     

     



     

  8.  排序算法

     

     

     





    选择排序
     

     

     

     3.堆排序

     



    4.插入排序

     

     

       

    5.希尔排序
    先分组,组内再插入排序
    每次移动范围大

     


     



     



    6.归并排序

      

     

     

     

     

    递归 自上而下

    非递归  自下而上

     


    6.归 并+插入
    归并 分到一定就调用插入排序

     

     

     


    7.快速排序,基于比较的最快的排序算法


     a.单边循环

     

     遇到符合条件 则停,两个都遇到则交换位置 

     

     b.双边循环,双向奔赴

     i找到与基准点相等的时候不停,故有重复元素时会偏右 

    j  i 代码顺序不能交换

     



    如何处理想等情况?

     不同:j为基准点索引最终值

     

     


    8.计数排序



    9.桶排序

     



    10.基数排序(按位排序)

     

    高位往低位排 msd
    11.Java中的排序算法
    7-13 JDK 

     14-20JDK

     

     

  9.  

    数组相对排序 

     

     

      

  10.  

    按照频率将数组升序排序

     

     

  11.  

    最大间距

     

     

     大范围数时,用桶排序的话,可能数组过大
    基数排序 

     

     

     速度相比桶排序较低

     改进桶排序


    防止除0异常

     再优化
     有空桶时,可以保证桶间间距大于桶内元素间距

     

     

  12.  


     

     

     

     

      

     

     

     

      空间更节省

     

     深度优先遍历

     广度优先




    拓扑排序

     

     

     检测环

     拓扑排序+深度优先

     状态1用在 环检测

      

  13.  

    迪克斯特拉  单源最短路径算法

     
    改进

     

     

            
    缺点:不能处理负权重

  14. 贝尔曼算法
    可以处理负边 ,但不能处理负环,需手动检测

  15.  

    弗洛伊德多源最短路径算法

     

     .....

  16.  

    最小生成树
    Prim算法(以顶点为核心)
      和迪克斯特拉算法很相似

     克鲁斯卡尔算法(以边为核心)

    从小到大找边,看边的两点是否未被联通

     不相交集合类

     最坏情况


    优化

     find优化,路径压缩


    优化union
    找到更合适的老大

     

     

     


  17. 贪心算法
    寻找最优解

      

  18.  

    零钱兑换 

     递归

     

     利用贪心算法
    可能得到错误结果
     

  19.  

    霍夫曼编码
      

     

     统计各个字符的出现频次

     构造树 

     

     


     编码 

     解码
     

  20.  

    活动选择 

     贪心算法
     优先选择最先结束的活动
     ’ 

  21.  

    分数背包问题

      



  22.  

    动态规划 解决斐波那契

      

  23.  

    贝尔曼算法求最短路径

     

     

     

  24.  

    路径问题

     改为一维数组表示
    原值为上次继承到的值,与左值相加即为新值

  25.  

     

    背包问题

      

     

     

     优化,二维数组降为一维数组 

  26.  

    完全背包问题
    每件物品无限多
     

     

      

     

     降维,为什么j的遍历顺序不用改变

  27.  

    零钱兑换 动态规划
     

     

     

     降维
     

  28.  

    零钱兑换 所有兑法
     

     

     

  29.  

    钢条切割问题
     

     

     

  30.  

    最长公共子串 动态规划
     

     

  31.  

    最长公共子序列
     

     

     

     上面和左面中取大的

  32.  

    两个字符串的删除操作,删到相同
      

     

     字符串1长度 + 字符串2长度 - 2*公共子序列长度 == 删除的长度 

  33.  

    最长递增子序列
     

     

     

  34.  

    不同的二叉搜索树


    卡特兰数

     

     

  35.  

    利用卡特兰数 求出战序列有多少种 

  36.  

    括号 生成

  37.  

    抢钱

     

  38.  

    旅行商问题

     

     

      

     

     

  39.  

    分治

     

  40.  

    快速选择算法 

  41.  

    求数组中第K大的元素


    利用快速选择算法  O(n)

     

     

  42.  数组中位数
     

     

     

     

     

  43.  快速幂

     

     改进

     

     改进0的情况


    改进负数次幂的情况



    改进极限负值(Integer最小值)

     换成long就行  

    另一种判断奇偶的方法
    与1按位与,通过判断最后一位

  44.  

    平方根整数部分
     

     

     

     缺陷:大数容易越界
     改进:改成除法

     

     



  45. 至少有k个重复字符的最长子串

      

    逐步去除出现频率不符合要求的字符

     

     



  46. 回溯

     

     

  47.  

    全排列II
     去除重复的排列
    剪枝

     

  48.  

    组合

     

     剪枝优化
    把多余的显然之后都不符合条件剪掉

     

  49. 组合总和,类似零钱兑换


    剪枝,优化

     

     

  50. 组合总和II
    只能用一次,且不允许有重复

     

     

  51.  

    组合总和III
    和组合比较类似


    更有效的剪枝

  52.  

    N皇后
     

     

    i为正在处理第几行 
    n为数组的维度,也是皇后的个数
    一行一行尝试放皇后,每一行中对不同列进行尝试

     若递归失败,没地方可放,则恢复到递归之前的状态,

  53.  

    解数独 

     

     

     

     

     

     

     






  54.  

     

标签:递归,algorithm,重复,优化,算法,数组,排序,Data,structure
From: https://www.cnblogs.com/miku831/p/17663614.html

相关文章

  • 阿里云DataX-KuduReader插件
    1.插件介绍1.1需求背景项目中需要从另一个Kudu集群定时同步数据,尝试好几个同步方案都不顺手。Datax上也只有KuduWriter插件,就简单实现了一个KuduReader插件。插件已同步至Github,有需要的小伙伴可以参考。插件支持Kudu作为源来读取数据,利用Datax丰富的插件库,可以满足不同的写......
  • Newtonsoft.Json:JObject 动态添加字段/List<JObject>转DataTable
    1.JObject动态添加字段;varjsonObject=newJObject();foreach(varkeyinKeys){jsonObject.Add(key,value);}jsonObject.Add("*****","1");2. List<JObject>转DataTable1): 首先List<JObject>转stringList<JObject>jso......
  • post data http or https
    classProgramTest{staticvoidMain(string[]args){stringurl="https://www.test.com";stringresult=PostUrl(url,"key=123");//key=4da4193e-384b-44d8-8a7f-2dd8b076d784Con......
  • TypeScript – Decorator Metadata
    前言在 TypeScript–Decorator装饰器 里,我有提到TypeScript只实现了decorate的特性,把metadata的特性独立了出来。本来我以为还需要等待很长的时间他们才会实现,没想到v5.2既然推出了。哎哟,不错哦!声明:Decorator不是TypeScript语法,它是ECMAScript(AKAJavaScr......
  • 智定义、易调整,火山引擎DataLeap助力企业轻松实现全流程值班管理
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,火山引擎大数据研发治理套件DataLeap全新上线值班管理模块,企业可通过该模块体系化智能化创建值班计划、管理值班人员,适用于运维排班、值班提醒、计划管理、监控报警等实际应用场景。值班工作......
  • 智定义、易调整,火山引擎DataLeap助力企业轻松实现全流程值班管理
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,火山引擎大数据研发治理套件DataLeap全新上线值班管理模块,企业可通过该模块体系化智能化创建值班计划、管理值班人员,适用于运维排班、值班提醒、计划管理、监控报警等实际应用场景......
  • 20230629 java.sql.DatabaseMetaData
    介绍java.sql.DatabaseMetaDatapublicinterfaceDatabaseMetaDataextendsWrapper数据库的元数据API常量procedureResultUnknown:0procedureNoResult:1procedureReturnsResult:2procedureColumnUnknown:0procedureColumnIn:1procedureColumnInOut:2p......
  • 20230629 java.sql.ParameterMetaData
    介绍java.sql.ParameterMetaDatapublicinterfaceParameterMetaDataextendsWrapper预备语句参数的元数据API常量parameterNoNulls:0parameterNullable:1parameterNullableUnknown:2parameterModeUnknown:0parameterModeIn:1parameterModeInOut:2par......
  • 20230629 java.sql.ResultSetMetaData
    介绍java.sql.ResultSetMetaDatapublicinterfaceResultSetMetaDataextendsWrapper结果集的元数据API常量columnNoNulls:0columnNullable:1columnNullableUnknown:2publicgetColumnCount返回当前ResultSet对象中的列数getColumnDisplaySize返......
  • github.com/mitchellh/mapstructure 教程
    官网链接:github.com/mitchellh/mapstructure本文只是简单的记录下mapstructure库的简单使用,想更加详细的学习,点击Godoc学习吧。文中内容基本都是来自后面的参考链接。github.com/mitchellh/mapstructure是一个用于将通用的map值解码为结构体(struct)并进行错误处理的Go......