【Leetcode】20.有效的括号 20 有效的括号题目:给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 2021-02-15 算法 栈与队列
BFPRT算法 BFPRT算法算法目的在无序数组中找到第K小的数,时间复杂度O(N) 基于partition思路的算法和快速排序中partition的思想有些相像。比如说我们要在长度为1000的数组中找到第n小的数,于是我们现在数组中随机找一个数进行partition的过程,小于它的放左边,等于它的放中间,大于它的放右边。完成后的情况如下图所示,等于区域范围为500-600 因为我们要找第n小的数,因此: 如 2021-02-15 算法
KMP算法 KMP算法KMP算法目的在str1中寻找str2出现的位置假设str1长度为N,str2长度为M 暴力方法:尝试从str1的每一个位置开始,让str2来匹配,暴力方法时间复杂度:O(MN) KMP算法流程: i1代表str1的索引,i2代表str2的索引。二者都从零位置开始尝试匹配。每一次匹配成功,i1和i2都右移 当匹配失败时(以图中为例:X != Y),有一个推论为:在str1从i到j中 2021-02-15 算法
【Leetcode】1143.最长公共子序列 1143.最长公共子序列题目给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 注:两个字符串的「公共子序列」(Longest Common Subsequence,简称 LCS)是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。 示例 1: 输入:text1 = "abcde", text2 = "ace& 2021-02-15 算法 动态规划
Git Git创建仓库git命令必须在仓库目录内执行 创建一个空目录并进入 12$ mkdir learngit$ cd learngit 将这个目录变成git可以管理的仓库 1$ git init 将一个文件添加到仓库 1$ git add readme.txt 注意:添加某个文件时,该文件必须在当前目录下存在 将这个文件提交到仓库 1$ git commit -m "wrote a re 2021-02-15 工具 Git
Manacher遍历 Manacher算法算法目的一个字符串中找到最长回文子串 暴力方法(中心扩展法)假设字符串的长度为N,那么回文串可能的中心有2N-1种。其中,每个单字符串都可作为回文串的中心,这种情况有N种。其次,双字符串也可作为回文串的中心,这种情况有N-1种。单字符中心负责扩展成长度为奇数的字符串,双字符串中心可以扩展成长度为偶数的字符串。例如: 字符串“aba”有5种可能的中心:a、b、c、ab、ba 2021-02-15 算法
Morris遍历 Morris遍历经典的二叉树遍历,无论是递归还是非递归。其空间复杂度都是O(h),其中h为二叉树的高度。而Morris遍历可以做到时间复杂度O(N), 空间复杂度O(1) 算法流程记当前来到的节点引用为cur 如果cur没有左孩子,那么cur向右移动:cur = cur.right 如果cur有左孩子,那么找到它左子树上最右的节点,记为mostright 如果mostright的右指针right 2021-02-15 算法
代理模式 定义一句话描述:控制对其他对象的访问 代理模式创建代理(Pxory),让代理控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。 RealSubject和Pxory都实现了Subject接口,因此Pxory可以在RealSubject出现的地方取代它。 代理模式有以下几个代表: 远程代理:控制访问远程对象 虚拟代理:控制访问创建开销大的资源 保护代理:基于权限 2021-02-15 设计模式 设计模式
传输层 传输层1.概述网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。 传输层包括以下两个协议: TCP(Transmission Control Protocol):TCP是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信, 2021-02-15 计算机基础 计算机网络
单例模式 单例模式定义单例模式确保一个类只有一个实例,并提供一个全局访问点 通常使用一个私有构造器、一个静态函数、一个私有静态变量来实现。 为了保证类只有一个实例,所以就不能用new关键字和构造器来创建对象实例,因此需要将构造器声明为私有的,只有在类的内部才能调用构造器。 与此同时,需要一个私有静态变量来记录这个唯一的对象实例 还需要一个私有静态函数来返回这个唯一的私有静态变量。 实现1.懒汉模式与饿汉 2021-02-15 设计模式 设计模式