zoukankan      html  css  js  c++  java
  • 【算法•日更•第五十一期】知识扫盲:什么是离散化?

    ▎前言

      之前就听很多同学和讲师们说离散化,小编一直不知道离散化是什么。

      其实离散化很简单,没有那么深奥,感觉这一篇注定又是一篇水博客。

    ▎概述

      离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中,只考虑需要用的值。离散化可以改进一个低效的算法,甚至实现根本不可能实现的算法。要掌握这个思想,必须从大量的题目中理解此方法的特点。例如,在建造线段树空间不够的情况下,可以考虑离散化。(copy自百度百科)

      感觉百度上的解释终于不深奥了。

    ▎原理

      比如说原来有这样一组数字:19260817,233,114514,100007,1;

      我们先排个序:1,233,100007,114514,19260817;

      然后标号:1,2,3,4,5

      重新放回数组:5,2,4,3,1

      所以离散化后就是5,2,4,3,1,通俗的可以理解成排名情况。

      说白了,就是降低数字规模,且不改变一些性质,就叫离散化。

      每道题要维护的性质不一样,所以如何离散化的策略也不一样,应该依题而定。

    ▎适用题型

    • 数据本身很大
    • 自身无法成为下标对应
    • 只需要维护相对性质
    • 与具体是多少无关
    • ……
  • 相关阅读:
    linux 程序安装目录/opt目录和/usr/local目录的区别
    Linux文件目录结构详解
    Jenkins卸载方法(Windows/Linux/MacOS)
    Jmeter案例demo
    idea打包java可执行jar包
    查看端口状态
    轻松掌握mongodb
    sphinx和coreseek
    redis
    redis默认端口6379以其名命名,是我孤陋寡闻了,是名性感美女(梅尔兹)
  • 原文地址:https://www.cnblogs.com/TFLS-gzr/p/11392890.html
Copyright © 2011-2022 走看看