我相信大家在leetcode刷题或者更好的国外天梯刷题的时候应该经常能看到

**<<,>>,|,&**在我们的if里面构成了一个判断的条件.
然后在大家看不懂情况下就莫名其妙的把题目作对了!!!


所以我们准备持续的更新一下,二进制的用法.

大家要明白一个道理.一切的工具它的使用属性都是收敛的!!!
说人话就是…锤子就是来钉钉子的…

模拟哈希表

刷过题目的都知道哈希表经常用来记录次数,尤其是记录比如说:
0,1问题,就是有还是没有?
1,2问题,有没有重复
n问题,统计次数

给你一个由小写英文字母组成的字符串 s ,请你找出并返回第一个出现 两次 的字母。
注意:
如果 a 的 第二次 出现比 b 的 第二次 出现在字符串中的位置更靠前,则认为字母 a 在字母 b 之前出现两次。
s 包含至少一个出现两次的字母。

哈希表

class Solution:def repeatedCharacter(self, s: str) -> str:seen = set()for ch in s:if ch in seen:return chseen.add(ch)

有人说这里用到的是set是集合。但是各位可以从集合特性上猜一猜,是不是就是一个维护了每一个key键的次数都是1的dict?
当然我们也可以标准的写成dict.has_key(‘a’)

所以解决0,1问题set是可以替代dict的。

但是我们这样很难装逼。。。
对于Python而言不是每一处位运算优化就一定好的。还是要看具体的场景下的性能。不能瞎优化。
但是此时此刻,我们就是要装逼。。。

class Solution:def repeatedCharacter(self, s: str) -> str:seen = 0for ch in s:x = ord(ch) - ord("a")if seen & (1 << x):return chseen |= (1 << x)

如何得出一个数的二进制? x = ord(ch) - ord(“a”)得出二进制的差值。ascll基础知识

这大概是最简单的了吧。。。
我们先来解释一下这两个是什么意思。

seen & (1 << x) 相当于二进制格式的索引,和if连用相当于has_key
seen |= (1 << x) 相当于二进制格式的初始化,

为什么相当于初始化

注意到字符集的大小为 26,因此我们可以使用一个 32位的二进制数 完美地存储哈希表。
32位其实可以最多表示2的32次方的数。
但是我们这里不是这么用的,没必要这么节约,反正int才32位,我只要存储26个不同的序号而已。
所以怎么办?
每一位出现1表示一个数!
比如a就是1前面31个0
b就是10然后前面30个0.

所以整个哈希表可以降维成一个全局变量seen!!!这26位或运算又不冲突seen |= (1 << x)所以不就相当于字典的键不冲突嘛
不就直接可以初始化咯。

Python--让我们秀翻算法中的二进制相关推荐

  1. python 决策树回归参数_使用 Python 和 scikit-learn 学习回归算法

    本教程已纳入面向开发者的机器学习这一学习路径. 简介 在本教程中,我们将介绍解决基于回归的机器学习问题的基础知识,并对当前最流行的一些算法进行比较研究. 设置 注册或登录. 从 Try IBM Wat ...

  2. python 回归去掉共线性_一文讲解机器学习算法中的共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  3. python做算法题优势_Python语言在科学算法中的优势

    2019 年第 4 期 信息与电脑 China Computer & Communication 算法语言 Python 语言在科学算法中的优势 刘 瑞 (辽宁师范大学海华学院,辽宁 沈阳 1 ...

  4. python 聚类_聚类算法中的四种距离及其python实现

    欧氏距离 欧式距离也就是欧几里得距离,是最常见也是最简单的一种距离,再n维空间下的公式为: 在python中,可以运用scipy.spatial.distance中的pdist方法来实现,但需要调整其 ...

  5. python冒泡排序时间复杂度_Python算法中的时间复杂度问题

    在实现算法的时候,通常会从两方面考虑算法的复杂度,即时间复杂度和空间复杂度.顾名思义,时间复杂度用于度量算法的计算工作量,空间复杂度用于度量算法占用的内存空间. 本文将从时间复杂度的概念出发,结合实际 ...

  6. 聚类算法中 K均值聚类(KMeans)的python实现

    ** 聚类算法中 K均值聚类(KMeans)的python实现 ** import numpy as np import matplotlib.pyplot as plt from sklearn.d ...

  7. python聚类算法中x是多维、y是一维怎么画图_基于Python的数据可视化:从一维到多维...

    目录 一.iris数据集介绍 二.一维数据可视化 三.二维数据可视化 四.多维数据可视化 五.参考资料 一.iris数据集介绍 iris数据集有150个观测值和5个变量,分别是sepal length ...

  8. 算法中七种常见的时间复杂度

    这是我的推广信息,以激励自己更好的分享自己的知识和经验!也希望看到的你能够多多支持,谢谢! 1. 滴滴云AI大师: 目前滴滴云正在大力推广自己的云计算服务,需要购买的朋友们用我的AI大师码 「2049 ...

  9. Python --深入浅出Apriori关联分析算法(二) Apriori关联规则实战

    上一篇我们讲了关联分析的几个概念,支持度,置信度,提升度.以及如何利用Apriori算法高效地根据物品的支持度找出所有物品的频繁项集. Python --深入浅出Apriori关联分析算法(一) 这次 ...

最新文章

  1. 最古老的100个.com域名
  2. sae mysql django_Django中MySQL读写分离技术
  3. php计算机基础知识,计算机基础知识①
  4. No injector for custom defined data type的解决办法
  5. HDU 5136 Yue Fei's Battle
  6. 如何发挥Intel傲腾持久内存最大能力?
  7. 建立自己的人脸数据集
  8. SqlServer存储过程详解
  9. flex blazeds java spring_flex+blazeds+java+spring后台消息推送
  10. 三星Note3 SM-N9009 国内天翼版本安装谷歌框架
  11. java地铁最短_南京地铁最短路径以及最少换乘算法C++不用类
  12. Java 发送短信工具类
  13. Win7不支持此接口的修复方法
  14. AutoHotKey 例程(自用-高手勿喷)
  15. 数字的世界——好神奇
  16. Android 数据库知识回顾
  17. 《Head First 设计模式》读书笔记——迭代器模式
  18. 10w+ Excel 数据导入,怎么优化?
  19. mongodb代码之复制集合(pymongo)
  20. [龙讯增刊2号]龙芯能干啥?

热门文章

  1. Android学习之运用多媒体
  2. 山不平何以平天下(D题)
  3. IDEA Maven工程出现org.codehaus.plexus.component.repository.exception.ComponentLookupException错误
  4. 传输层 TCP UPD 应用场景
  5. Java实现 LeetCode 278 第一个错误的版本
  6. broyden matlab,Broyden方法求解非线性方程组的Matlab实现
  7. Linux_设置smba共享
  8. 7自由度整车仿真模型建立
  9. Power PMAC运动控制器 —— 学习笔记1
  10. ESP-IDF:模板函数测试