自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 Mac上为VS Code配置Python运行环境及matplotlib画图示例

Python安装VS Code官方教程首先根据教程安装VS Code、VS Code Python extension和Python3(mac系统里面一般都内置了Python3)。如果官网的下载链接太慢了,可以百度其他国内的下载源/镜像。可以在Terminal中用下列语句检验python是否安装:$ python3 --version为了能在Terminal中直接用code命令打开VS Code,首先要保证VS Code的安装路径已经被添加到PATH中:打开VS Code打开Comma

2021-09-21 19:05:02 1864 1

原创 【面试】计算机网络——传输层

参考自B站王道考研视频UDP仅在IP数据报服务之上增加了复用分用和差错检测功能。UDP特点UDP是无连接的,减少开销和发送数据之前的时延。UDP使用最大努力交付,即不保证可靠交付。UDP是面向报文的,适合一次性传输少量数据的网络应用,比如QQ和微信 (传输大文件时除外)。UDP无拥塞控制,适合很多实时应用,比如在线直播,视频会议。UDP首部开销小,只有8B,而TCP的首部有20B。UDP首部格式UDP首部包含四个部分,其中源端口不是必须的,而目的端口是必须的,长度为首部加数据的总长

2021-07-27 22:55:22 204

原创 【数据结构与算法】Leetcode407 接雨水 II -困难(堆、BFS)

接雨水II是对接雨水I的拓展,将一维数组扩展到了二维矩阵,之前接雨水I中的动态规划、单调栈以及双指针在这里都不起作用,但是在我之前介绍接雨水I的文章中对双指针进行了分析和延伸,延伸出的更通用的解法即优先队列解法则可以轻易地移植到接雨水II中。

2021-06-01 04:46:33 643

原创 【Leetcode周赛】第243场周赛 T3 - 1882. 使用服务器处理任务 - 中等(堆/优先队列)

来源:力扣题目描述给你两个下标从 0 开始 的整数数组 servers 和 tasks ,长度分别为 n​​​​​​ 和 m​​​​​​ 。servers[i] 是第 i​​​​​​​​​​ 台服务器的权重 ,而 tasks[j] 是处理第 j​​​​​​ 项任务所需要的时间(单位:秒)。 你正在运行一个仿真系统,在处理完所有任务后,该系统将会关闭。每台服务器只能同时处理一项任务。第 0 项任务在第 0 秒可以开始处理,相应地,第 j 项任务在第 j 秒可以开始处理。处理第 j 项任务时,你需要为它

2021-05-31 08:15:21 314

原创 【数据结构与算法】Leetcode42 接雨水I -困难(动态规划、单调栈、双指针、堆)

接雨水I算是Leetcode上比较经典而且有意思的题了,解法也有挺多的,有官方题解介绍的动态规划、单调栈、双指针,还有我补充的堆解法,这篇文章不是搬运文,而是对官方题解的补充,而且将接雨水II的解法移植到了接雨水I中,展示了更通用的这类题型的解法和思路。

2021-05-29 16:21:17 189

原创 【Leetcode每日一题】2021-04-29 403 青蛙过河 - 困难 - 动态规划 (Python & C++)

来源:力扣为了选出新的首领,青蛙部落准备在河边举办一场比赛,部落的首领必须同时具备强健的体魄和灵活的头脑,所以举办方制定了如下的比赛规则:假定河流被等分为若干个单元格,在其中的一些单元格内放有一块石子。石子的位置存在stones中(用石子所在单元格的序号升序表示)。候选人只能从一块石子跳到另一块石子,跳入水中即视为淘汰。开始时,候选人站在第一块石子上,规定第一步只能跳一个单元格的距离,即只能从单元格1跳到单元格2,即stones[0]为0,stones[1]必须为1。为了选出最优秀的候选人,

2021-05-27 20:48:51 916

原创 【数据结构与算法】字典树/前缀树(Python/C++)

字典树/前缀树 Trie前缀树是一种树结构,当一系列单词有很多公共前缀时就可以用前缀树来存储和查询,如果这些单词没有公共前缀,那么和用数组存是一样的。当前缀树中的元素只有字母时常被称为字典树。前缀树是一种空间换时间的思想,这个和哈希表还有动态规划是一样的。前缀树常常被用于基于前缀的模糊匹配,但其不局限于存储单词,树中的节点可以是任意的数据类型或者结构,比如前缀树会被用来解决最大异或值的问题,这时前缀树为二叉树,节点的值为0或者1。前缀树只能用作基于前缀的模糊匹配,如果要做到匹配字符串中的某一段则要借助

2021-05-27 16:52:14 397

原创 【数据结构与算法】双端队列 deque

参考《程序员面试指南:IT名企算法于数据结构题目最优解(第2版)》双端队列deque普通的队列是先入先出FIFO(First In First Out),只能从队尾添加元素,从队首弹出元素。而双端队列则是从队尾添加元素,但是既可以从队首弹出元素,和普通的队列一样,也可以和栈一样从队尾弹出元素,所以叫双端队列deque(double-ended queue),它同时具备队列(FIFO)和栈(LIFO)的特性。生成窗口最大值数组题目描述有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边

2021-05-25 06:23:35 320

原创 【数据结构与算法】单调栈

参考《程序员面试指南:IT名企算法于数据结构题目最优解(第2版)》单调栈单调栈是一种从栈顶到栈底单调递增或单调递减的栈。它常用于解决离某位置最近的最大或者最小值这种问题。不含重复值的数组问题描述给定一个不含重复值的数组arr,找到每一个i位置左边和右边离i位置最近且值比arr[i]小的位置。返回所有位置相应的信息,不存在则为-1。示例:输入:arr = [3, 4, 1, 5, 6, 2, 7]输出:[(-1, 2), (0, 2), (-1, -1), (2, 5), (3, 5),

2021-05-23 01:59:30 203

原创 【设计模式】单例模式

参考了《人人都懂设计模式:从生活中领悟设计模式(Python实现)》Ensure a class has only one instance, and provide a global point of acces to it.确保一个类只有一个实例,并且提供一个访问它的全局方法。应用场景你希望这个类有且只能有一个实例;项目中的一些全局管理类。实现方式(Python)1) 重写__new__和__init__方法class Singleton(object): # 在这里定义

2021-05-20 20:52:24 71

原创 【个人博客搭建之路】第1话——next主题博客添加canvas_nest动画背景

背景关于Hexo Next主题添加canvas_nest动画背景网上有很教程,但是他们的第一个条件我就没满足——将next/_config.yml中的canvas_nest改为true,而我的_config.yml中压根没这一项,而且我的hexo和next版本都是很新的,所以看着这些教程感觉很无奈,为啥别人默认都有这一项,难道我安装了个假next?不过我还没有放弃,终于让我在github中找到解决办法,而且非常简单。安装第一步 → 转到Hexo的根目录第二步 → 创建文件 footer.swig

2021-05-19 23:56:15 472 1

原创 【C++学习笔记】面向对象程序设计——虚函数和多态

虚函数 (virtual)OOP (Object Oriented Programming) 的核心思想是多态性 (Polymorphism)。通常情况下,如果我们不使用某个函数,则无须为该函数提供定义,但是我们必须为每一个虚函数都提供定义,而不管它是否被用到了,这是因为连编译器也无法确认到底会使用哪个虚函数。因为有时候看似是代码中只有基类的引用或者指针调用了一个虚函数,但是在运行中如果实参是派生类的引用或指针,那么其实调用的是派生类的虚函数,所以在派生类中不但要在声明中覆盖 (override)

2021-05-05 17:02:40 273

原创 【Leetcode每日一题】2021-05-04 740 删除并获得点数 - 中等 - 动态规划 (Python & C++)

来源:力扣给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入:nums = [3,4,2]输出:6解释:删除 4 获得 4 个点数,因此 3 也被删除。之后,删除 2 获得 2 个点数。总共获得 6 个点数。示例 2:输入:nums = [2

2021-05-05 03:39:25 177

原创 【Leetcode每日一题】2021-05-03 1473 粉刷房子III - 困难 - 动态规划 (Python & C++)

来源:力扣在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n )。有的房子去年夏天已经涂过颜色了,所以这些房子不需要被重新涂色。我们将连续相同颜色尽可能多的房子称为一个街区。(比方说 houses = [1,2,2,3,3,2,1,1] ,它包含 5 个街区 [{1}, {2,2}, {3,3}, {2}, {1,1}] 。)给你一个数组 houses ,一个 m * n 的矩阵 cost 和一个整数 target ,其中:houses[i]:是

2021-05-05 00:27:56 207 3

原创 使用ffmpeg合并多个mp4文件

关键词:ffmpeg、Mac、Python、bash安装ffmpeg打开浏览器,进入ffmpeg官方下载页面,选择操作系统对应的可执行文件下载选项,直接下载压缩包并且解压即可。解压完"ffmpeg-4.4.7z"会得到一个"ffmpeg"的可执行文件,此时我们在命令行是无法使用ffmpeg命令的,因为我们并没有安装ffmpeg到系统,只是下载了可执行文件,下一步我们打开Terminal,把ffmpeg的可执行文件移动到"/usr/local/bin"文件夹下面,这样我们就可以在命名行正常使用ffm

2021-05-02 21:19:53 2800

原创 最小生成树算法(Kruskal) C++实现

代码参考来源//// main.cpp// KruskalMST//// Created by YangZai on 22.04.21.//#include <iostream>#include <map>using namespace std;/* 不并集(Disjoint-Set)节点(node)的定义 */typedef struct _dsetNode{ // 节点的值/名字 char data; // 当前节点作为代

2021-04-23 06:45:46 357

原创 “简约版”Pytorch —— Pytorch-Lightning详解

PyTorch-Lightning介绍安装实用功能Automatic Batch Size Finder - 自动获取Batch SizeAutomatic Learning Rate Finder - 自动获取初始学习率Reload DataLoaders Every Epoch - 重新加载数据Callbacks - 回调函数Weights Summary - 展示网络信息Progress Bar - 进度条Training and Eval Loops - 训练以及测试循环Training on GP

2020-11-16 08:19:54 25280 12

原创 【Leetcode每日一题】2020-09-11 637 二叉树的层平均值 - 简单 (Python & C++)

来源:力扣给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.示例 1:输入:  3  /  \ 9  20   /   \ 15   7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回

2020-09-14 06:10:45 133

原创 【Leetcode每日一题】2020-09-10 216 组合总和 III - 中等 (Python & C++)

来源:力扣找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set

2020-09-12 04:08:34 159

原创 【Leetcode每日一题】2020-09-09 40 组合总和 II - 中等 (Python & C++)

来源:力扣给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。Given a collection of candidate numbers (candidates) and a target number (target), find all unique combinations i

2020-09-10 04:08:48 125

原创 【Leetcode每日一题】2020-09-08 39 组合总和 - 中等 (Python & C++)

来源:力扣给定一个无重复元素的数组 candidates 和一个目标数 target ,找出candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), find all unique combinations in candidates where th

2020-09-09 04:13:09 124

原创 【排序算法】插入排序 (Python & C++)

来源:https://www.runoob.com/w3cnote/insertion-sort.html基本思想:插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。时间复杂度:插入排序的平均时间复杂度和最坏情况是 O(n²),最好情况为O(n),空间复杂度为O(1),因为是原地排序(in-place)。算法步骤:将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依

2020-09-07 16:24:02 84

原创 【排序算法】选择排序 (Python & C++)

来源:https://www.runoob.com/w3cnote/selection-sort.html基本思想:选择排序是一种简单直观的排序算法,每次循环找出最小(大)值,所以无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。时间复杂度:选择排序的时间复杂度都是 O(n²),空间复杂度为O(1),因为是原地排序(in-place)。算法步骤:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放

2020-09-06 19:38:25 101

原创 【排序算法】冒泡排序 (Python & C++)

来源:https://www.runoob.com/w3cnote/bubble-sort.html基本思想:冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。时间

2020-09-06 19:00:30 156

原创 【Markdown】常用语法

Markdown语法

2020-09-06 06:33:28 72

原创 【Leetcode每日一题】2020-09-05 107 二叉树的层次遍历 II - 简单 (Python & C++)

来源:力扣给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).例如:给定二叉树 [3,9,20,null,null,15,7],  3  /  \9

2020-09-06 06:10:41 71

原创 【Leetcode每日一题】2020-09-03 257 二叉树的所有路径 - 简单 (Python & C++)

来源:力扣给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:  1 /  \2   3 \  5输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3思路:深度优先搜索 DFSPython# Definition for a binary tre

2020-09-06 06:08:38 106

原创 【Leetcode每日一题】2020-09-02 剑指Offer 20 表示数值的字符串 - 中等 Python

来源:力扣请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。示例:字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、"0123"都表示数值;“12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。解题思路:作者:jyd来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/solution/mian-s

2020-09-06 06:06:26 127

原创 【Leetcode每日一题】2020-08-25 491 递增子序列 - 中等 (Python & C++)

来源:力扣给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increasing subsequence should be at least 2.示例:输入: [4, 6, 7, 7]输出:

2020-09-06 06:02:20 150

原创 【Leetcode每日一题】2020-08-23 201 数字范围按位与 - 中等 (Python & C++)

来源:力扣给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。Given a range [m, n] where 0 <= m <= n <= 2147483647, return thebitwise AND of all numbers in this range, inclusive.思路:2147483647的二进制为31位的1组成,最粗暴的做法是直接用它递归地

2020-09-06 05:58:43 110

原创 【图算法】Dijkstra —— 最短路径

Dijkstra

2020-09-06 04:36:44 373

原创 【操作系统】进程、线程、并发、高并发

进程与线程

2020-09-06 02:19:01 288

原创 【操作系统】Linux实用命令

解压zip文件:语法: unzip [选项] 文件名.zip选项: -v 查看压缩文件目录,但不解压 -t 测试文件有无损坏,但不解压 -d 目录 把压缩文件解到指定目录下 -n 不覆盖已经存在的文件 -o 覆盖已存在的文件且不要求用户确认 -j 不重建文档的目录结构,把所有文件解压到同一目录下将文件解压到当前目录下面:unzip 文件名.zip查看文件目录,但不解压:unzip -v 文件名.zip将文件解压到目标文件夹,若目标文件夹不存在则会自动创建,不覆盖同名文件:u

2020-09-05 17:23:54 159

原创 【排序算法】快速排序 (Python & C++)

基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。时间复杂度:快速排序的最坏运行情况是 O(n²),比如说顺序数列的快排。但它的平摊期望时间是 O(nlogn),且 O(nlogn) 记号中隐含的常数因子很小,比复杂度稳定等于 O(nlogn) 的归并排序要小很多。所以,对绝大多数顺序性较弱的随机数列而言,快速排序总是优于归并排序。算法步骤:

2020-08-28 16:22:38 151

原创 C++笔记

C++强制类型转换static_cast, reinterpret_cast:static_cast 完成“相关类型”的转换reinterpret_cast 处理“互不相关类型”的转换reinterpret_cast 操作执行的是比特位拷贝,就好像用mamcpy()一样,所以reinterpret_cast常被用于不同类型指针的互相转换,因为所以类型的指针的长度都是一致的,比如在32位系统就是4字节,不会造成数据损失。也可以用在int类型和指针类型互相转换。struct student{ st

2020-08-27 05:31:28 96

原创 【笔试题】刺客信条/Assassin’s Creed (阿里巴巴2020.08.26笔试第二题)

题目:有一个刺客接了一个杀死怪物的任务,他有一把剑,耐久度为m,怪物分为两种,一种是不带剑的空手怪物,一种是带剑的怪物,不同的怪物有不同的血量,血量和刺客佩剑的耐久度对应,即杀死a点血的怪物需要消耗a点耐久度。如果杀死带剑的怪物,则可以拿走怪物的剑,怪物的剑比较特殊,它可以无视血量杀死任何一只怪物并且不损失刺客自己剑的耐久度,但是每杀死一个怪物它就会少一点耐久度,耐久度为0则报废。该刺客对自己的要求很高,要求自己在能杀死更多的怪物的前提下,保证消耗的耐久度最低。输入:n为总共的怪物数,m为刺客

2020-08-27 04:31:40 308 1

原创 Leetcode每日一题 (Python & C++)

数字范围按位与/Bitswise AND of Numbers Range给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.来源:力扣(LeetCo

2020-08-23 16:58:38 333

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除