找出整形数组中占比超过一半的数
小R从班级中抽取了一些同学,每位同学都会给出一个数字。已知在这些数字中,某个数字的出现次数超过了数字总数的一半。现在需要你帮助小R找到这个数字。
测试样例:
样例1:
输入:**array = [1, 3, 8, 2, 3, 1, 3, 3, 3]**
输出:**3**
样例2:
输入:**array = [5, 5, 5, 1, 2, 5, 5]**
输出:**5**
样例3:
输入:**array = [9, 9, 9, 9, 8, 9, 8, 8]**
输出:**9**
:::success map
:::
def solution(array):
# Edit your code here
half = len(array) / 2
temp = {}
for a in array:
if temp.get(a, 0):
temp[a] += 1
if temp[a] > half:
return a
else:
temp[a] = 1
return 0
if __name__ == "__main__":
# Add your test cases here
print(solution([1, 3, 8, 2, 3, 1, 3, 3, 3]) == 3)
存储系统
- 什么是存储系统?
- 一个提供了读写、控制类接口,能够安全有效的把数据持久化的软件,就可以称为存储系统
系统特点
- 性能敏感
- 容易受硬件影响
- 代码,既简单又复杂
RAID技术
- 单机存储系统怎么做到高性能/高性价比/高可靠性
- R(edundant) A(rray) of I(nexpensive) D(isks)
- RAID 出现的背景
- 单块大容量磁盘的价格 》 多块小容量磁盘
- 单块磁盘的写入性能 《 多块磁盘的并发写入性能
- 单块磁盘的容错能力有限, 不够安全
RAID 0
- 多块磁盘简单组合
- 数据条带话存储,提高磁盘带宽
- 没有容错
RAID 1
- 一块磁盘对应一块额外镜像盘
数据库和存储系统不一样吗?
关系是什么?
关系 = 集合 = 任意元素组成的若干有序偶对
反映了事物间的关系
关系代数 = 对关系作运算的抽象查询语言:交、并、笛卡尔积。。。
SQL = 一种DSL = 方便人类阅读的关系代数表达形式
非关系数据库也是存储系统,但是一般不要求严格结构化
本地文件系统
Linux经典哲学:一切皆文件
分布式存储-HDFS
- 支持海量数据存储
- 高容错性
- 弱POSIX语义
- 使用普通x86服务器
- 什么是 HDFS?
Hadoop 分布式文件系统 (HDFS) 是一种管理大型数据集的文件系统,可在商品硬件上运行。HDFS 是 Hadoop 最常用的数据存储系统,可用于将单个 Apache Hadoop 集群扩展到数百甚至数千个节点。 由于 HDFS 能以高吞吐量有效管理大数据,因此可用作数据管道 ,非常适合支持复杂的数据分析。