08 2020 档案
摘要:1114. 按序打印 我们提供了一个类: public class Foo { public void first() { print("first"); } public void second() { print("second"); } public void third() { print(
阅读全文
摘要:http://www.qianjia.com/html/2018-06/06_294718.html
阅读全文
摘要:public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>, Seriablizable { private static final long serialVersion
阅读全文
摘要:一、Nginx 进程池:Nginx 是个“轻量级”的 Web 服务器,它的 CPU、内存占用都非常少,同样的资源配置下就能够为更多的用户提供服务 使用了“进程池 + 单线程”的工作模式==》 Nginx 在启动的时候会预先创建好固定数量的 worker 进程,在之后的运行过程中不会再 fork 出新
阅读全文
摘要:一、HTTP2 兼容HTTP/1: 由于 HTTPS 已经在安全方面做的非常好了,所以 HTTP/2 的唯一目标就是改进性能。 头部压缩:HTTP/1只压缩了body,并没有对header进行压缩 HTTP/1 里可以用头字段“Content-Encoding”指定 Body 的编码方式,比如用 g
阅读全文
摘要:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 class Solution: def exist(self, bo
阅读全文
摘要:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 ==》stack # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.r
阅读全文
摘要:给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],...,k[m]。请问k[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 定义一个数组
阅读全文
摘要:请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left =
阅读全文
摘要:输入一棵二叉树,判断该二叉树是否是平衡二叉树 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 Python # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.l
阅读全文
摘要:操作给定的二叉树,将其变换为源二叉树的镜像 Python # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None c
阅读全文
摘要:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # se
阅读全文
摘要:给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2. Python # Definitio
阅读全文
摘要:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) Python # -*- coding:utf-8 -*- #
阅读全文
摘要:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 Python # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.r
阅读全文
摘要:输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。 class Solution: def hammingWeight(self, n: int) -> int: res = 0 while n: if n & 1 == 1: res += 1 n = n >> 1 return
阅读全文
摘要:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? Python # -*- coding:utf-8 -*- class Solution: def rectCover(self, number): # write co
阅读全文
摘要:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 Python # -*- coding:utf-8 -*- class Solution: def jumpFloorII(self, number): # write code here
阅读全文
摘要:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 Python # -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): # write code he
阅读全文
摘要:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 n<=39 Python # -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): # write code her
阅读全文
摘要:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 Python # -*-
阅读全文
摘要:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 Python # -*- coding:utf-8 -*- class Solution: def __init__(self): self.s1 = [] self.s2 = [] def push(self,
阅读全文
摘要:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 Python # Definition for a binar
阅读全文
摘要:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 Python # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solut
阅读全文
摘要:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 Python # -*- coding:utf-8 -*- class Solution: # s 源字符串 def replaceSpac
阅读全文
摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 Python # -*- coding:utf-8 -*- class Solution: # array
阅读全文
摘要:搜索算法==》在图中找出从一个顶点出发,到另一个顶点的路径 public class Graph { //无向图 private int v; //顶点的个数 private LinkedList<Integer> adj[]; //邻接表 public Graph(int v) { this.v
阅读全文
摘要:图的存储==》 1、邻接矩阵存储方法==》底层依赖二维数组 2、邻接表存储方法==》数组/散列表+链表
阅读全文
摘要:堆Heap==》堆排序:原地、O(nlogn) 堆==》堆是一个完全二叉树;堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值==》大顶堆(小顶堆) 实现一个堆==》完全二叉树比较适合用数组来存储 数组中下标为i的节点的左子节点,就是下标为i*2的节点,右子节点就是下标为i*2+1的
阅读全文
摘要:Redis的数据保存在内存中,可能出现物理内存不足的情况。物理内存不足时,Redis使用“虚拟内存”解决 Redis的VM与操作系统的VM相似,把很少访问的value保存到磁盘中。同时,Redis把value对应的key都放在内存中,为了能够让Redis快速定位到被换出的value所在磁盘位置,从而
阅读全文
摘要:实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = "ll"输
阅读全文
摘要:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 示例: s = "leetcode"返回 0 s = "loveleetcode"返回 2 Python class Solution: def firstUniqChar(self, s: str) -> in
阅读全文
摘要:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 Python class Solutio
阅读全文
摘要:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例
阅读全文
摘要:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: 输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。 Python class
阅读全文
摘要:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11
阅读全文
摘要:给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2)
阅读全文
摘要:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精
阅读全文
摘要:动态规划==》把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系(状态转移方程),逐个求解 本质==》一个规模比较大的问题(可以用两三个参数表示的问题),可以通过若干规模较小的问题的结果来得到的(通常会寻求到一些特殊的计算逻辑,如求最值等) Python class Solution: def
阅读全文
摘要:给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到
阅读全文
摘要:实现网页爬虫中的URL去重功能==》 散列表、红黑树、跳表,都支持快速地插入、查找数据,内存消耗呢? 位图==》比较特殊的散列表 我们有 1 千万个整数,整数的范围在 1 到 1 亿之间。如何快速查找某个整数是否在这 1 千万个整数中呢?==》申请一个大小为 1 亿、数据类型为布尔类型(true 或
阅读全文
摘要:1、在海量数据中快速查找某个数据 2、为什么需要索引 业务和功能的本质==》“对数据的存储和计算”==》存储:数据结构;计算:算法 一旦存储的数据很多,那性能就成了这些系统要关注的终点,特别是在一些跟存储相关的基础系统(比如MySQL数据库、分布式文件系统等)、中间件(比如消息中间件RocketMQ
阅读全文
摘要:1、防止数据库中的用户信息被脱库 2、将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。 3、应用 安全加密==》MD5、SHA 唯一标识==》如果要在海量的图库中,搜索一张图是否存在,我们不能单纯地用图片的元信息(比如图
阅读全文
摘要:1、Word文档中的单词拼写检查功能 2、散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。 散列思想==》与数组的下标形成一一映射,所以利用数组支持根据下标随机访问的时候,时间复杂度是 O(1) 这一特性 散列表用的就是数组支持按照下标随机访问的时候
阅读全文
摘要:1、Redis使用跳表实现有序集合 Redis 中的有序集合支持的核心操作主要有下面这几个==》 插入一个数据; 删除一个数据; 查找一个数据; 按照区间查找数据(比如查找值在[100, 356]之间的数据); 跳表>红黑树 迭代输出有序序列。 2、跳表==》可以支持快速地插入、删除、查找操作,写起
阅读全文
摘要:1、二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0 2、代码 循环退出条件==》low<=high mid的取值==》low + (high - low)/2 low + ((h
阅读全文
摘要:1、冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序 2、排序算法的执行效率==》 最好情况、最坏情况、平均情况时间复杂度 时间复杂度的系数、常数、低阶:对同一阶时间复杂度的排序算法性能对比的时候,就要把系数、常数、低阶也考虑进来 比较次数和交换(或移动)次数 3、排序算
阅读全文
摘要:1、递归==》DFS深度优先搜索、前中后序二叉树遍历 递归求解问题的分解过程==》去的过程叫“递”,回来的过程叫“归”,基本上,所有的递归问题都可以用递推公式来表示 2、递归需要满足的三个条件==》 一个问题的解可以分解为几个子问题的解 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样
阅读全文
摘要:1、队列在线程池等有限资源池中的应用==》当我们向固定大小的线程池中请求一个线程时,如果线程池中没有空闲资源了,这个时候线程池如何处理这个请求?是拒绝请求还是排队请求?各种处理策略又是怎么实现的呢?==》队列Queue 非阻塞的处理方式:直接拒绝任务请求;阻塞的处理方式:将请求排队,等到有空闲线程时
阅读全文
摘要:1、浏览器的前进和后退功能==》使用两个栈,X 和 Y,我们把首次浏览的页面依次压入栈 X,当点击后退按钮时,再依次从栈 X 中出栈,并将出栈的数据依次放入栈 Y。当我们点击前进按钮时,我们依次从栈 Y 中取出数据,放入栈 X 中。当栈 X 中没有数据时,那就说明没有页面可以继续后退浏览了。当栈 Y
阅读全文
摘要:LRU缓存淘汰算法==》维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。当有一个新的数据被访问时,我们从链表头开始顺序遍历链表 1. 如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其从原来的位置删除,然后再插入到链表的头部。 2. 如果此数据没有在缓存链表中,又可
阅读全文
摘要:在大部分编程语言中,数组都是从0开始编号的,为什么数组要从0开始编号,而不是从1开始呢? 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表:数组、链表、栈、队列 非线性表:二叉树、堆、图等 在非线性表中,数据之间并不是简单的前后关系 如何实现随机
阅读全文
摘要:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 ->
阅读全文
摘要:创建版本库-->repository-->一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。 创建一个版本库:mkdir 名称 把目录变成Git可以管理的仓库:git init 把文件添加到仓库:
阅读全文
摘要:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 Python # Definition for singly-linked list. # class ListNo
阅读全文
摘要:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? Python # Defin
阅读全文
摘要:Python class Solution: def convert(self, s: str, numRows: int) -> str: res = ['' for _ in range(numRows)] i = 0 while i < len(s): j = 0 while i < len(
阅读全文
摘要:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 Python class Solution: def threeSum(self, nums:
阅读全文
摘要:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 Go func twoSum(nums []int, target int) []int { m :
阅读全文
摘要:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 Python class Solution: def plusOne(self, digits: List[int]
阅读全文
摘要:27.给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 26.给定一个排序数组,你需要在
阅读全文
摘要:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 Python class Solution: def maxProfit
阅读全文
摘要:Python class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if len(strs) == 0: return "" return reduce(self.helper, strs) def helper
阅读全文
摘要:给定两个数组,编写一个函数来计算它们的交集 示例1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 说明: 输出结果中每个元素出现的次数,应与元素在
阅读全文

浙公网安备 33010602011771号