自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 记录Github上显示不出图片的解决方法

记录Github上显示不出图片的解决方法翻阅网上资料,了解是因为DNS污染造成的,不是github的问题实际上,可以认为,ERR_CERT_COMMON_NAME_INVALID就是用一个错误的域名访问了某个节点的https资源。导致这个错误的原因,基本是:dns污染host设置错误官方更新了dns,但是dns缓存没有被更新,导致错误解析。解决方法主要思路就是使用本地hosts文件对网站进行域名解析,一般的DNS问题都可以通过修改hosts文件来解决,github的CDN域名被污染问题也不

2020-10-16 08:56:47 428

原创 LeetCode#54. 螺旋矩阵

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]来源:力扣(LeetCode)链接:https://leetcode-cn.

2020-07-06 10:42:15 141

原创 LeetCode#240. 搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 target = 20,

2020-07-06 10:16:30 158

原创 LeetCode$79. 单词搜索

给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 false提示:

2020-07-04 17:45:46 124

原创 LeetCode#127. 单词接龙

**给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord = “hit”,endWord =

2020-07-04 14:07:05 138

原创 LeetCode#56. 合并区间

给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-inte

2020-07-03 16:01:50 92

原创 LeetCode#395. 至少有K个重复字符的最长子串

找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = “aaabb”, k = 3输出:3最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。示例 2:输入:s = “ababbc”, k = 2输出:5最长子串为 “ababb” ,其中 ‘a’ 重复了 2 次, ‘b’ 重复了 3 次。通过次数10,974提交次数25,372来源:力扣(LeetCode)链接:https://leet

2020-07-03 11:41:33 181

原创 LeetCode#150. 逆波兰表达式求值

根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: [“4”, “13”, “5”, “/”, “+”]输出: 6解释:

2020-07-03 10:42:42 104

原创 LeetCode#210. 课程表 II

课程,返回一个空数组。示例 1:输入: 2, [[1,0]]输出: [0,1]解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为 [0,1] 。示例 2:输入: 4, [[1,0],[2,0],[3,1],[3,2]]输出: [0,1,2,3] or [0,2,1,3]解释: 总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。因此,一个正确的课程顺序是 [0,1,2,3] 。另一个

2020-07-03 10:15:16 110

原创 LeetCode#207. 课程表

你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。示例 2:输入: 2, [[1,0],[0,1]]输出: false解释:

2020-07-02 17:30:14 81

转载 LeetCode#134. 加油站

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入:gas = [1,2,3,4,5]cost = [3,4,5,1,2]输出:

2020-06-29 17:17:23 127

原创 LeetCode#17. 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number著作权归领扣网络所有。商业转载请联系官方授权,非商

2020-06-29 15:50:15 102

原创 LeetCode#384. 打乱数组

打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。int[] nums = {1,2,3};Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。solution.shuffle();// 重设数组到它的初始状态[1,2,3]。solution.reset();// 随机返回数组[1,2,3]打乱后的结果。solution.shuffle();

2020-06-29 15:20:51 179

原创 LeetCode#454. 四数相加 II

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]输出:2解释:两个元组如下:

2020-06-29 10:40:23 162

原创 36. 有效的数独

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,".",".","."],[".",“9

2020-06-28 15:49:08 88

原创 LeetCode#103.二叉树的锯齿形层次遍历

给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal著作权归领扣网

2020-06-28 14:12:38 96

原创 LeetCode#148. 排序链表

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2020-06-17 13:03:17 113

原创 LeetCode#75.颜色分类

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。你能想出一个仅使用常数空间的一趟扫描算

2020-06-16 13:05:17 186

原创 LeetCode#73. 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]进阶:一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案

2020-06-12 13:11:09 121

原创 LeetCode#162.寻找峰值

峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入: nums = [1,2,1,3,5,6,4]输出: 1 或 5解释: 你的函数可以返回索引 1,

2020-06-10 14:00:41 132

原创 LeetCod#116.填充每个节点的下一个右侧节点指针

给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:输入:{“KaTeX parse error: Expected '}', got 'EOF' at en

2020-06-09 13:07:07 108

原创 LeetCode#347. 前 K 个高频元素

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案。通过次数57,7

2020-06-08 13:25:39 113

原创 LeetCode#341.扁平化嵌套列表迭代器

给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。示例 1:输入: [[1,1],2,[1,1]]输出: [1,1,2,1,1]解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。示例 2:输入: [1,[4,[6]]]输出: [1,4,6]解释: 通过重复调用 next 直到 hasNext

2020-06-05 19:31:47 174

转载 LeetCode#11.盛最多的水的容器

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49来源:力扣(LeetC

2020-06-05 18:53:28 113

原创 STL源码剖析-RBTree

关联式容器根据“数据在容器中的排列”特性,容器可分为序列式和关联式容器两种。标准的STL关联式容器可分为set(集合)和map(映射表)。这些容器的底层机制均以RB-tree完成,RB-tree也是一个独立容器,但并不对外开放。此外,SGI STL还提供了一个不在标准规格之列的关联式容器:hash table(散列表)以及hash table为底层机制完成的hash_set(散列集合)、has...

2020-05-05 16:20:24 306

原创 C++实现红黑树

//// Created by Administrator on 2020/4/29.//#ifndef RBTREE_RBTREE_H#define RBTREE_RBTREE_H#include <iostream>#include <algorithm>#include <vector>#include <string>...

2020-05-04 14:14:37 406

原创 GO-爬虫

GO-爬虫参考:https://www.bilibili.com/video/BV1ub411p7cz简介:使用beego框架,写了一个爬取豆瓣电影的爬虫,爬取的是静态页面。爬取电影信息存入mysql,同时使用redis缓存爬取的urls,及电影id,用于去重及作为url队列。预备条件下载beego框架,前提是配置好go的gopath:使用指令go get github.com/asta...

2020-04-14 22:12:31 579

原创 Go-聊天室

用go写一个聊天室参考https://www.bilibili.com/video/BV1ub411p7cz?p=28服务端:服务端作为转发服务器,接收客户端的数据,根据客户端信息中的目的ip进行转发,因此每个客户端接入的时候,我们需要保存其地址及对应的net.Conn,因此用一个map来保存。主线程的作用在于接收客户端,接收到一个客户端就开启一个协程来处理该客户端发送的数据,另外我们设置一个...

2020-04-11 21:39:46 162

原创 剑指offer#56.数组中只出现一次的数字 && 56 - II. 数组中数字出现的次数 II

数组中只出现一次的数字:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:首先如果只有一个数字,可以通过异或全体数字得到唯一一个不同的数字,但现在有两个数字,需要找一种方法拆分成两个数组,然后再异或,我们可以通过先异或整个数组得到两个不同数字相互异或的结果,该结果中必然有一位为1,找出该位,将数组按照该位为1拆分成两个数组,分别异或即可得到两个不同...

2020-04-08 12:50:25 98

原创 STL源码剖析-priority_queue

priority_queue概述priority_queue是一个拥有权值观念的queue,它允许加入新元素、移除旧元素、审视元素值等功能。由于这是一个queue,所以只允许在低端加入元素,并从顶端取出元素,除此之外别无其他存取元素的途径。priority_queue内的元素并非按照被推入的次序排列,而是自动依照元素的权值排列,权值最高的排在最前面。缺省情况下,priorit-queue是利...

2020-04-07 17:30:15 161

原创 剑指offer#55.二叉树的深度、平衡二叉树

二叉树的深度:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL...

2020-04-07 15:14:06 77

原创 剑指offer#54.二叉搜索树的第k大节点

二叉搜索树的第k大节点:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。中序遍历/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...

2020-04-07 14:59:04 78

原创 STL源码剖析-heap

heap概述heap并不属于STL容器组件,它是个幕后英雄,扮演priority_queue的助手。priority_queue允许用户以任何次序将任何元素推入容器内,但取出时一定是从优先权最高(也就是数值最高)的元素开始取,binary max heap正是具有这样的特性,适合作为priority_queue的底层机制。如果让list作为priority_queue的底层机制,元素插入操作可...

2020-04-06 17:26:15 219

原创 STL源码剖析-Queue

queue概述queue是一种先进先出的数据结构,它有两个出口,queue允许新增元素、移除元素、从最低端加入元素、取得最顶端的元素。但除了最低端可以加入,最顶端可以取出,没有任何其他方法可以存取queue的其他元素,queue不允许有遍历行为。将元素推入queue的操作称为push,将元素推出queue的操作称为pop。queue定义完整列表与stack类似,同样可以采用deque作为...

2020-04-03 16:45:52 288

原创 STL源码剖析-stack

stack概述stack是一种先进后出的数据结构。只有一个出口,stack允许新增元素、移除元素、取得最顶端元素。但除了最顶端外,没有任何其他方法可以存取stack的其他元素。也就是stack不允许遍历行为。将元素推入stack的操作称为push,将元素推出stack的操作称为pop。stack定义完整列表stack其实是将某种容器作为底部结构,将其接口改变,使其符合“先进后出”的特性,...

2020-04-03 16:41:18 144

转载 运算符重载使用友元的好处

参考:https://blog.csdn.net/qq_36864672/article/details/76422722一般情况下:将双目运算符重载为友元函数,这样就可以使用交换律,比较方便单目运算符一般重载为成员函数,因为直接对类对象本身进行操作...

2020-04-03 16:05:57 456

转载 C++引用作为函数的返回值的注意事项及好处

参考:https://blog.csdn.net/weixin_40539125/article/details/81410008

2020-04-03 14:35:14 471

原创 STL源码剖析--deque

deque概述vector是一种单向开口的连续线性空间,而deque是一种双向开口的连续线性空间,所谓双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,如图为deque的示意图:deque和vector 的最大差异:deque允许常数时间对头端进行元素的插入和删除操作deque没有所谓的容量观念,因为它是动态地以分段连续空间组合而成的,随时可以增加一段新的空间并链接起来,换句话...

2020-04-02 21:20:57 259

原创 剑指offer#53.数字在排序数组中出现的次数 && II. 0~n-1中缺失的数字

数字在排序数组中出现的次数:统计一个数字在排序数组中出现的次数。思路:因为数组中已经排好序,所以立刻可以想到用二分查找,但是二分查找只能查找到一个数,所以查完以后要向左向右去找出分别的第一个和最后一个k,然后得到次数,这样的复杂度为O(n),因此我们需要改进一下,修改二分查找找出第一个数和最后一个数,就可以使复杂度变成O(logN),如何判断第一个数呢,只要找到的这个数下标是0或者不为0,则与其...

2020-03-30 15:52:49 139

原创 STL源码剖析-List

List概述List的好处是每次插入或删除一个元素,就配置或释放一个元素空间,因此,List对于空间的运用有绝对的精准,一点也不浪费。并且,对于任何位置的元素插入或移除,llist永远是常数时间。List的节点list本身和list的节点是不同的结构,list本身应该是整一张表,而一张表有很多个节点,以下是list的节点的结构:template<typename T> ...

2020-03-29 21:46:31 288

空空如也

空空如也

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

TA关注的人

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