【数据结构与算法】LeetCode:每日一题
六月3 连续数组🎈
大佬思路算法步骤:
创建一个哈希表,用 key 来储存 cur 值, value 来储存当前 index。
假设我们碰到 0 就将 cur 减一, 碰到 1 则 加一。如果我们能在哈希表中找到当前的 cur 值, 则取出对应的 pos, 在看当前的 index - pos 是否比 ans 大, 取其中的最优解。
核心:由于以上碰1加一,碰0减一的操作,当0与1数量一致时(连续数组), 其连续数组的和为零。因此我们知道数组前面的 cur 值是什么,在到达该连续数组尾部时就不会变。因此我们只需要检查哈希表中是否存在其相同的 cur 值即可!(多读几遍)
作者:Xiaohu9527链接:https://leetcode-cn.com/problems/contiguous-array/solution/dong-tu-yan-shi-qian-zhui-he-si-xiang-by-z2no/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
12345678910111213141516171819202122 ...
【机器学习】Python数据分析常用库
刚结束了4四天的死亡美赛,在建模过程和之前机器学习进行数据分析过程中用到了大量 Python 数据分析常用库
一次次在搜索引擎上查各个库的用法是真滴麻烦
本篇博客用以记录 Python 数据分析中常用库的常用用法,日常用到时查阅方便
1. Numpy
Python没有提供数组功能,Numpy可以提供数组支持以及相应的高效处理函数,是Python数据分析的基础,也是SciPy、Pandas等数据处理和科学计算库最基本的函数功能库,且其数据类型对Python数据分析十分有用。
Numpy提供了两种基本的对象:ndarray和ufunc。ndarray是存储单一数据类型的多维数组,而ufunc是能够对数组进行处理的函数。Numpy的功能:
N维数组,一种快速、高效使用内存的多维数组,他提供矢量化数学运算。
可以不需要使用循环,就能对整个数组内的数据进行标准数学运算。
非常便于传送数据到用低级语言编写(C\C++)的外部库,也便于外部库以Numpy数组形式返回数据。
Numpy不提供高级数据分析功能,但可以更加深刻的理解Numpy数组和面向数组的计算。
官方文档:https:// ...
【分布式系统】6.824
Lecture1 - Introduction
参考链接:nil.csail.mit.edu/6.824/2022/papers/mapreduce.pdf
为什么使用分布式系统
连接分隔开的物理机器(允许用户共享数据)
通过并行来提高容量(capacity)
容错(tolerate faults)
通过隔离实现安全
发展历史
局域网(1980s):DNS、AFS
数据中心随着大型网站兴起(1990s):网页搜索、购物
云计算(2000s)
……
挑战
大量并发组件
必须处理部分故障(某台机器宕机)
难于实现性能优势
课程结构
课程
论文
labs
Mapreduce
replication using raft
replicated K-V service
sharded K-V service
聚焦:基础架构
存储
计算
通信
主题
容错(高可用性-备份、可恢复性-日志/事务)
一致性
性能(吞吐量、延迟)
实现
MapreduceLab1
Q1:需要开启一个协程来不断循环监控某个共享变量,同时这个共享变量又会在其 ...
【Go面试常备】
Go语言基础1. 什么是协程
携程是一种用户态轻量级线程,是线程调度的基本单位
通常在函数前加关键字 go 就可以实现
一个Goroutine会以一个很小的栈启动(2KB或4KB),当遇到栈空间不足时,栈会自动伸缩, 因此可以轻易实现成千上万个goroutine同时启动
2. 高效拼接字符串 💖拼接字符串的方式有:+、fmt.Sprintf、strings.Builder、bytes.Buffer、strings.Join
+ 使用 + 对字符串进行拼接时,需要对字符串进行遍历,计算并开辟一个新的空间来存储新的字符串
fmt.Sprintf 采用了接口参数,必须要用反射获取值,有一定的性能损耗
strings.Builder 使用 WriteString 进行拼接,内部实现是:指针+切片,同时使用 String() 返回拼接后的字符串。它是直接把 []byte 转化成 string,从而避免了变量拷贝
bytes.Buffer bytes.Buffer 是一个缓冲 byte 的缓冲器。bytes.Buffer 的底层也是一个 []byte
strings.Join strings ...
【LeetCode刷题笔记】
常用数据结构前缀树在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。简单实现:
123456789101112131415161718192021222324252627282930313233// 前缀树结构type Trie struct { children map[rune]*Trie isEnd bool}func NewTrie() *Trie { return &Trie{children: make(map[rune]*Trie)}}// 插入字符串func (t *Trie) Insert(word string) { current := t for _, r := ...
【OCaml使用手册】
本文用于课程《程序设计语言原理》的学习。参考:乔治会写代码了吗 的个人主页 - 动态 - 掘金官网:Welcome to a World of OCaml
OCaml is a general-purpose, industrial-strength programming language with an emphasis on expressiveness and safety.
OCaml 最早称为 Objective Caml,是 Caml 编程语言的主要实现,开发工具包含交互式顶层解释器,字节码编译器以及最优本地代码编译器。Ocaml 有一个巨大标准库,使得可以像 Python 或者 Perl 语言一样可以方便地开发各种应用程序。
基本语法基本运算整型操作需要使用:+ 、-、*、/(向下取整)浮点数操作需要使用:+. 、-.、*.、/.区域操作:mod布尔运算:&&、||、not等于和不等于:=、<>字符串相加:^(字符为 'a',而字符串为 "a")
1234567891011121314153 + 3; ...
【Redis学习笔记】
官网:Redisgo-redis:redis package - github.com/go-redis/redis/v8 - Go Packages
utools markdown存储位置 - 搜索
1. Linux 安装及使用
安装:
12345# 安装sudo apt-get install redis# 使用redis-cli pingredis
启动redis,测试是否联通:
123456789101112131415# 指定配置文件启动redis-serverroot@hecs-264482:~# redis-server /etc/redis/redis.conf% 指定端口号启动redis-cliroot@hecs-264482:~# redis-cli -p 6379# 查看是否联通127.0.0.1:6379> pingPONG# 查看所有的key127.0.0.1:6379> keys *1. "username"2. "mylist"
查看服务是否已经启动: ps -ef ...
【考研】计算机组成原理知识点梳理
本篇文章用于梳理 408 中最硬核的一门课——计算机组成原理 的知识点
便于之后与以后回顾
参考:王道单科书《计算机组成原理考研复习指导》未标明出处的图片等资源均取自书中
缺的内容会慢慢补上
总知识点框架
第一章 计算机系统概述考纲及章节框架
1.1 计算机系统层次结构
计算机系统的组成
硬件系统和软件系统共同构成了一个完整的计算机系统
硬件是计算机系统中实际物理装置的总称
软件是指在硬件上运行的程序和相关数据及文档
软件的效率表征计算机系统性能的好坏,而软件性能的发挥离不开硬件的支持
软硬件在逻辑上等效:对某一功能既可以用软件实现又可以用硬件实现
计算机硬件的基本组成
1. 冯·诺依曼机
冯·诺依曼提出“存储程序”的思想,“存储程序”的思想奠定了现代计算机的基本结构
冯·诺依曼机的特点:
计算机系统由 运算器、控制器、存储器、输入设备、输出设备 组成
指令和数据同等地位,并可以按地址寻访
指令数据均由二进制码组成
指令由 操做码和地址码 组成
指令在存储器内顺序存放
早期冯·诺依曼机以 运算器 为中心(现代计算机已发展为以 存储器 为中心)
2. 计算机功能 ...
【考研】考研冲冲冲!
十月
十月计划
数学
时限
具体内容
计划日期
备注
数二真题
结束十七堂课或者在十七堂课还没更新的时候刷从 21 年真题练手先做奇数年:11、13、15、19再做偶数年:12、14、16、20一遍过后二刷,针对重点题和错题留 17(简单)、18(难)两年最后模拟再之后可以参考张宇/李正元真题解析进行三刷
每天一篇,月底前近十年全部刷完
武忠祥十七堂课
做完卷子以后,针对错题较多的专题,看武忠祥十七堂课进行查漏补缺
做完真题后视情况看
每日一题
抽空就做
408
项目
具体内容
计划日期
备注
OS 三轮
边部充思维导图,边过第三轮单科书
十号之前解决
计组三轮
同上
一天 1 ~ 2 小节,25 号之前解决
DS 三轮
同上
过快一点,月底拿下
英语
项目
具体内容
计划日期计划日期
备注
单词词组
每天单词/词组 x 400,过完这轮词组继续过单词
一直背到考研前
英二真题
一天 1~2 篇阅读或完型或七选五和翻译
3 ~ 4 天一套,先做着
作文
看王江涛作文书
月底前开始准 ...
【考研】数据结构知识点总结
树与二叉树
节点数 n = 所有节点度(degree) + 1
二叉树中:n = n0 + n1 + n2
n2 = n0 + 1
树的路径长度:树根到每个节点的路径长度的总和
中序遍历 + 前序/后序/层序 ——》 构建一颗树
n 个节点二叉树的空指针域个数:n + 1
前序遍历结果与中序遍历结果相同:非叶子节点只有右子树
前序遍历结果与后序遍历结果相反:高度等于节点数(所有节点度为 1)
树的先根遍历与二叉树(森林)的先序遍历结果相同
树的后根遍历与二叉树(森林)的中序遍历结果相同
平衡二叉树调整不平衡
LL:右旋
RR:左旋
LR:左旋、右旋
RL:右旋、左旋
高为 h 的平衡二叉树最少有几个节点:$$h_n = h_(n-1) + h_(n-2) + 1$$