Jiang's blog

Jiang's blog

Jiang 的个人博客

每日一道算法之--单词的压缩编码
单词的压缩编码力扣第820题:https://leetcode-cn.com/problems/short-encoding-of-words/ 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。 例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。 对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。 那么成功对给定单词列表进行编码的最小字符串长度是多少呢? 示例: 输入: wo...
数据结构学习笔记---队列
学习自极客时间的《数据结构与算法之美》 作者:王争 队列1. 什么是队列?先进者先出,这就是典型的“队列”。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。所以,队列跟栈一样,也是一种操作受限的线性表数据结构。 作为一种非常基础的数据结构,队列的应用也非常广泛,特别是一些具有某些额外特性的队列,比如循环队列、阻塞队列、并发队列。它们在很多偏底层系统、框架、中间件的开发中,起着关键性的作用。比如高性能队列 Disruptor、Linux 环形缓存,都用到了循环并发队列;Java...
《趣谈网络协议》学习笔记之--最常用的运用层(下)
学习自极客时间《趣谈网络协议》 作者:刘超 5. 流媒体协议5.1 什么是流媒体? 流媒体(Streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网络上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。流媒体文件一般定义在bit层次结构,因此流数据包并不一定必须按照字节对齐,虽然通常的媒体文件都是按照这种字节对齐的方式打包的。流媒体的三大操作平台是微软公司、RealNetworks、苹果公司提供的。 5.2 有哪些多媒体常用协议 TTP/TCP/UDP 涵盖传统的私有协议,以及...
数据结构学习笔记---栈
学习自极客时间的《数据结构与算法之美》 作者:王争 栈一. 什么是栈?了解枪的弹夹的人应该很清楚,弹夹就是一种栈,我们将子弹压入弹夹中,最后压入的那颗子弹,总是最先发射出去。后进者先出,先进者后出,这就是典型的“栈”结构。 从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。 事实上,从功能上来说,数组或链表确实可以替代栈,但你要知道,特定的数据结构是对特定场景的抽象,而且,数组或链表暴露了太多的操作接口,操作上的确灵活自由,但使用时就比较不可控,自然也就更容易出错。 二. 如何实现一个“栈”?栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈...
每日一道算法之--回溯算法总结和全排列问题
回溯算法“回溯”算法也叫“回溯搜索”算法,主要用于在一个庞大的空间里搜索我们所需要的问题的解。我们每天使用的“搜索引擎”就是帮助我们在庞大的互联网上搜索我们需要的信息。“搜索”引擎的“搜索”和“回溯搜索”算法的“搜索”意思是一样的。 “回溯”指的是“状态重置”,可以理解为“回到过去”、“恢复现场”,是在编码的过程中,是为了节约空间而使用的一种技巧。而回溯其实是“深度优先遍历”特有的一种现象。之所以是“深度优先遍历”,是因为我们要解决的问题通常是在一棵树上完成的,在这棵树上搜索需要的答案,一般使用深度优先遍历。 回溯算法的模板: 1234567891011class Solution: ...
《趣谈网络协议》学习笔记之--最常用的运用层(上)
学习自极客时间《趣谈网络协议》 作者:刘超 1. HTTP协议1.1 HTTP 请求的准备我们在浏览器上输入的网址,比如https://www.baidu.com/, 就是一个URL,也叫做统一资源定位符。之所以叫统一,是因为它是有格式的。HTTP 称为协议,www.baidu.com 是一个域名,表示互联网上的一个位置。正是因为这个东西是统一的,所以当你把这样一个字符串输入到浏览器的框里的时候,浏览器才知道如何进行统一处理。 浏览器将域名发送给DNS服务器,然后DNS将域名解析为IP地址,HTTP 是基于 TCP 协议的,先建立 TCP 连接,目前使用的 HTTP 协议大部分都是 ...
数据结构学习笔记---链表
学习自极客时间的《数据结构与算法之美》 作者:王争 链表一. 链表和数组的区别 数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。 而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用,所以如果我们申请的是 100MB 大小的链表,根本不会有问题。其中,我们把内存块称为链表的“结点”。 二. 链表的插入和删除 在进行数组的插入、删除操作时,为了保持内存数据的连续性,需要做大量的数据搬移,所以时间复杂...
每日一道算法之--电话号码的字母组合
电话号码的字母组合力扣第17题:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:”23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 1. 回溯 首先看一看数字对应的可能是3个字母或是4个字母。所...
头条一面凉经
头条一面总结昨天头条的一面结束了,总体感觉就是有一点出乎一点的感觉,哈哈哈,和平时网上看到的面经完全不一样呀,主要还是自己的积累不够,所以做一个总结来警示自己还要多加努力啊,大厂从来都不会这么容易就能进去的。 一. 实现队列的方法首先第一道题问了队列的实现,我首先有想到了是三种实现方法。基于栈的实现方法;基于链表的实现方法;基于数组的实现方法 首先基于站的实现方法我回答出来了,就是是想用辅助栈实现 基于链表的实现也挺简单,插入直接插到最后,取的时候去头元素,然后在更新头元素 基于数组的方法,妈的一开始没想到双指针我真是服了自己了,做了这么多的双指针的题,竟然没想到,这个真的是自己疏...
数据结构学习笔记---数组
学习自极客时间的《数据结构与算法之美》 作者:王争 数组一. 什么是数组数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 什么是线性表(Linear List)。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而非线性表的代表则有树,图,堆等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。 连续的内存空间和相同类型的数据,使得数组支持随机访问,但是带来的麻烦就是删除和插入操作时变得不高效。 数组是如何实现根据下标随机访问数组元...
avatar
Jiang
witness me
FRIENDS
friendA friendB