第六届字节跳动青训营第八课 | 豆包MarsCode AI 刷题

60 阅读2分钟

找出整形数组中占比超过一半的数

小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 能以高吞吐量有效管理大数据,因此可用作数据管道 ,非常适合支持复杂的数据分析

ceph