Jiang's blog

Jiang's blog

Jiang 的个人博客

每日一道算法之--杨辉三角
杨辉三角力扣第118题 : https://leetcode-cn.com/problems/pascals-triangle/ 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 示例: 输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]] 1. 迭代实现 首先考虑边界numRows为0时,直接返回一个空列表; 如果numRows不为空时,它的第一个子列表必为[1],所以可以初始化res为[[1]]; 每一个子列表的结果,都是上一个子列表从第二个元素开始两两相加(到最后一个元素时不用...
每日一道算法之--删除排序链表中的重复元素 II
删除排序链表中的重复元素 II力扣第82题: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5输出: 1->2->5 示例 2: 输入: 1->1->1->2->3输出: 2->3 滑动窗口思想读完了这道题目,注意一个点,就是只要是重复元素,就要删掉所有,而且链表是...
每日一道算法之--颜色分类
颜色分类力扣第75题 : https://leetcode-cn.com/problems/sort-colors/ 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意:不能使用代码库中的排序函数来解决这道题。 示例: 输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2] 1. 计数排序这道题其实说白了就是排序,可以按照普通的排序直接做,但是它这里只会出现0, 1, 2 这三种数字,所以使用计数排序是一个很好的选择。...
数据结构学习笔记---散列表
学习自极客时间的《数据结构与算法之美》 作者:王争 散列表散列表,又叫哈希表(Hash Table),是能够通过给定的关键字的值直接访问到具体对应的值的一个数据结构。也就是说,把关键字映射到一个表中的位置来直接访问记录,以加快访问速度。散列表用的就是数组支持按照下标随机访问的时候,时间复杂度是 O(1) 的特性。我们通过散列函数把元素的键值映射为下标,然后将数据存储在数组中对应下标的位置。当我们按照键值查询元素时,我们用同样的散列函数,将键值转化数组下标,从对应的数组下标的位置取数据。 1. 散列思想散列的思想, 其实就是利用数组的随机访问特性, 将key-value形式的数据, 其...
每日一道算法之--不同路径
不同路径力扣第62题 : https://leetcode-cn.com/problems/unique-paths/ 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 示例 1: 输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。 向右 -> 向右 -> 向下 向右 -> 向下 -> 向右 向下 -> 向右 -> 向右 示例 2: ...
每日一道算法之--跳跃游戏
跳跃游戏力扣第55题 : https://leetcode-cn.com/problems/jump-game/ 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。 示例 2: 输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个...
数据结构学习笔记---跳表
学习自极客时间的《数据结构与算法之美》 作者:王争 跳表跳表是一种动态数据结构,支持快速的插入、删除、查找操作,时间复杂度都是 O(logn)。目前开源软件 Redis 和 LevelDB 都有用到它,它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,可以支持快速的插入、删除、查找操作。Redis 中的有序集合(Sorted Set)就是用跳表来实现的。 跳表的实现1. 单链表对于一个单链表来讲,即便链表中存储的数据是有序的,如果我们要想在其中查找某个数据,也只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,是 O(n)。 2. 建立一级索引如果是说链表是...
数据结构学习笔记---线性排序
学习自极客时间的《数据结构与算法之美》 作者:王争 1. 桶排序(Bucket sort)桶排序,顾名思义,会用到“桶”,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。 12345678910111213141516def bucketSort(nums): # 选择一个最大的数 max_num = max(nums) # 创建一个元素全是0的列表, 当做桶 bucket = [0]*(max_num+1) # 把所有元素放入桶中, 即把对应元素个数加一 for i ...
《趣谈网络协议》学习笔记之--陌生的数据中心(上)
学习自极客时间《趣谈网络协议》 作者:刘超 1. DNS协议1.1 DNS域名结构一. 域名的层次结构 像Linux目录结构一样,现代因特网采用层次树状结构的命名方法,任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,该名字称为域名。 每一个域名(英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成,标号序列总长度不能超过255个字符,它由点号分割成一个个的标号(label),每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。级别最低的域名写在左边,级别最高的域名写在右边。 域名服务主要是基...
数据结构学习笔记---经典排序
学习自极客时间的《数据结构与算法之美》 作者:王争 排序排序的内存消耗原地排序(Sorted in place)。原地排序算法,就是特指空间复杂度是 O(1) 的排序算法。 排序算法的稳定性仅仅用执行效率和内存消耗来衡量排序算法的好坏是不够的。针对排序算法,我们还有一个重要的度量指标,稳定性。经过某种排序算法排序之后,如果两个相同元素的前后顺序没有改变,那我们就把这种排序算法叫作稳定的排序算法;如果前后顺序发生变化,那对应的排序算法就叫作不稳定的排序算法。 1. 冒泡排序(Bubble Sort) 12345678910def BubbleSort(arr): lenght =...
avatar
Jiang
witness me
FRIENDS
friendA friendB