zoukankan      html  css  js  c++  java
  • 常见算法面试题的常见解法1 Counting Sort

    算法面试题中经常出现的一种题目就是 查找 或者是排序. 个人感觉有80%的题目都和查找排序有关

    大部分常用的排序算法时间复杂度都是O(nLogn)

    这个只能说是通用解,一般解

    对于算法面试题中往往要求很低的时间复杂度,

    例如下面这个题目

    已知一个数组长为m 中间存放的都是整数 其值范围为1-m ,中间的元素有可能重复 也有可能不重复

    如何在O(M)的情况下查到 (1-m)的数中 哪些数重复了,哪些数没有出现

    counting sort 的本质是 新建一个长度为M的数组An 每一个数组下标代表一个数 ,数组中的值代表这个元素出现的次数 (初始值都为0)

    那么, 遍历一次m 遇到一个数 就在对应的下标上加1

    那么最终可以得到一个An 其中包含了所有元素的出现个数

    将其展开 就可以获得排序完的数组

    这是一种特殊的算法,只能解决特殊的问题 但是他的时间复杂度是O(n)

    如果在你遇到排序 或者查找之类的算法题的时候,不如上去先试试counting sort

  • 相关阅读:
    日♂常
    日♂常
    生哥的hu测
    生哥的hu测
    118.编程实现添加环境变量
    4.泡妞与设计模式(五) 原型模式
    4.泡妞与设计模式(四)享元模式
    2.泡妞与设计模式(三) 外观模式
    1.泡妞与设计模式(二)合成模式
    0.泡妞与设计模式(一)工厂模式
  • 原文地址:https://www.cnblogs.com/PurpleTide/p/2014989.html
Copyright © 2011-2022 走看看