设置引用计数的思路在算法的实施中十分有用,它也是许多垃圾回收系统(Garbage Collection,GC)的基本组件(这是一种内存管理形式,主要是用于自动回收那些不再会被用到的对象,判断的标准即是是否对其的引用计数变为0)。

统计一个序列中各自元素出现的次数(被引用):

M = [2, 2, 0, 5, 3, 5, 7, 4]
n = len(M)
count = [0]*M
for i in M:count[i] += 1

所以使用数组(list、vector)的方式保存引用计数的话,其建立的对应关系即是:

元素(通过下标实现) ⇒ 元素出现的次数(被引用的次数)
arr[5] = 3; // 5 出现三次

在 Python 的最新版本中,collections 模块自带了 Counter 类,有了它,上述的 for 循环即可变为:

from collections import Counter
M = [2, 2, 0, 5, 3, 5, 7, 4]
count = Counter(M)# count:Counter({0: 1, 2: 2, 3: 1, 4: 1, 5: 2, 7: 1})

补充

处理的、修改的,是引用计数值(不对原始数据做修改):

  • 初始化时的+1,
  • 移除元素时的-1,
  • 判断计数是否为0,

并不对原有的数据存储进行修改,也即不执行 coll.pop(), coll.append() 此类的操作。

Python 数据结构与算法——引用计数相关推荐

  1. Python 数据结构与算法——从二分图到寻找最大排列(Maximum Permutation)

    假设现在有 8 位有着特殊癖好的人去买票看电影,其中有一部分人得到了自己喜欢的座位,但大多数人并不满意.现在的问题是,如果这些人各自都有自己喜欢的座位(喜欢的座位有重叠,这是进行最大排列的前提,否则无 ...

  2. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

    python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...

  3. Python数据结构与算法(一)列表和元组

    本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...

  4. python数据结构与算法练习-Printer Queue

    python数据结构与算法练习-队列 Printer Queue python实现 需要注意的知识点: Printer Queue 链接: link. The only printer in the ...

  5. [FreeCodeCamp笔记] Python 数据结构和算法1 二分搜索 Binary Search

    我以前学过数据结构和算法(data structure and algorithms. 现在普遍简称DSA),当时用的Robert Sedgewick的coursera课程.这位大神写的<算法( ...

  6. Python数据结构与算法_9_有序链表

    前情提要:Python数据结构与算法_8_链表.无序链表 接下来我们研究有序链表. 什么是有序链表 如果给定一个链表,他的节点数据元素都是的整数,如77, 26, 31, 93, 17, 54.如果这 ...

  7. python 数据结构与算法——排序

    文章目录 排序的分类 排序的复杂度 python 实现 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快排 树排序 线性时间排序算法 计数排序 桶排序 桶排序的复杂度分析 基数排序 排序的 ...

  8. Python天天美味(32) - python数据结构与算法之堆排序

    1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data):     for i in ran ...

  9. python数据结构与算法13_python 数据结构与算法 (13)

    python 数据结构与算法 (13) 选择排序 (Selection sort) 是? 种简单直观的排序算法. 它的? 作原理如 下.? 先在未排序序列中找到最?(?)元素, 存放到排序序列的起始位 ...

最新文章

  1. Nature『大脑废物清除系统』已上线,从“痴呆”变聪明或成可能
  2. repmgr 4.3 发布,PostgreSQL 复制与故障转移管理工具
  3. 实用:Google Chrome 键盘快捷键大全
  4. java 服务器长链接_Java如何实现长连接
  5. 构造函数不能为虚函数
  6. IT接口——Micro USB带来的市场影响力
  7. JS之按照Unicode返回指定字符串
  8. Spring MVC的表单标签库详解
  9. 这可能是迄今为止对大前端最好的解释
  10. 教你如何用 Python 三行代码做动图!
  11. java 开发小记:如何使用 MyEclipse 开发自己的类库(mylib.jar)以及引用(使用)她...
  12. linux内核修改电流,为AM335x移植Linux内核主线代码(43)USB HUB和鼠标
  13. css碎步测量,隧洞测量实习日记.doc
  14. 用Java写了一个简单的控制台狼人杀游戏
  15. 约当标准型_约当标准形矩阵对应的“基”是什么?
  16. 【微信小程序】微信开发者工具 app.json: [“subpackages“][0][“root“] 字段需为目录 已解决
  17. 【错误处理】Azkaban安装失败 installation Failed.Error chunking
  18. ROP_Emporium_badchars
  19. 用编程求FFFF:0到FFFF:F字节型数据的和,结果存放在dx中
  20. php表单页面防重复提交方法总结

热门文章

  1. wordpress PHP合并js,在WordPress函数文件中包含JS(使用PHP)的最佳实践
  2. scala中getorElse()方法
  3. 数据挖掘:模型选择——关联规则
  4. 1tensorflow 实现端到端的OCR:二代身份证号识别 + 2tensorflow LSTM+CTC实现端到端的不定长数字串识别
  5. OpenCV实现立体视觉的案例
  6. 360强力删除也无法删除的文件 的 终极删除方法
  7. 如何用jQuery获得radio的值
  8. C#导入导出Excele数据
  9. 查询相关股票十档行情的方法
  10. [SGU223]Little Kings(状压DP)