自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 01背包问题

01背包问题总得来说01背包问题指的是有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能使用一次(每件物品的使用次数不受限制指的是完全背包问题),从而求解将哪些物品装入到背包里物品价值总和的最大化。背包问题可以使用回朔搜索出所以的情况,进而得到物品价值总和的最大化,但是时间复杂度会是O(2^n),这里n表示物品的数量。举一个例子:背包最大重量为4。物品为:重量价值物品0115物品1320

2021-08-14 18:45:26 159

原创 动态规划之整数拆分

LeetCode地址:整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。方法一 动态规划1.确定dp数组dp[i]是指第i个数将其拆分为至少两个正整数的和,并且使得这些整数的

2021-08-12 10:11:58 603

原创 动态规划之使用最小花费爬楼梯

LeetCode地址:使用最小花费爬楼梯数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例 1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15

2021-08-11 23:25:51 191

原创 动态规划之不同路径 II

LeetCode地址:不同路径 II一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上

2021-08-11 23:12:50 102

原创 动态规划之不同路径

LeetCode地址:不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1图示:示例1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -&gt

2021-08-11 22:39:16 269

原创 动态规划之爬楼梯

LeetCode地址:爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。 - 1 阶 + 1 阶 + 1 阶 - 1 阶 + 2 阶 - 2 阶 + 1 阶第一种方法 动态规划1.确定dp数组

2021-08-11 17:03:25 355

原创 动态规划系列之斐波那契数

LeetCode地址:斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) =

2021-08-11 15:45:09 256

原创 等差数列划分

LeetCode地址:等差数列划分如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例 1:输入:nums = [1,2,3,4]输出:3解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。

2021-08-10 10:43:39 252

原创 剑指 Offer 09. 用两个栈实现队列

LeetCode地址:剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1: 输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:

2021-08-09 20:27:43 48

转载 从输入一个URL到页面加载完成的过程

计算机网络 从输入一个URL到页面加载完成的过程前言这个问题从一开始被问到,到开始了解这个知识点所涉及的知识体系的广度和深度。整体流程用户在某个标签页输入URL回车之后,浏览器主进程会新开一个网络进程,发起HTTP请求浏览器会进行DNS查询,将域名解析为IP地址浏览器获得IP地址后,向服务器请求建立TCP连接浏览器向服务器发起HTTP请求服务器处理请求,返回HTTP响应浏览器的渲染进程解析并绘制页面如果遇到JS/CSS/图片等静态资源的引用链接,重复上述过程,向服务器请求这些资源

2021-08-07 20:05:20 446

原创 剑指 Offer 07. 重建二叉树

LeetCode地址:剑指 Offer 07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]限制:0 &l

2021-08-06 17:21:40 64

原创 剑指 Offer 06. 从尾到头打印链表

LeetCode地址:剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000-第一种解法 栈因为是从尾到头的打印链表,所以将链表进行翻转然后依次从头打印结果就是原本链表的从尾到头打印了,但是通常来说打印操作是只读的,所以我们都不希望在打印的时候修改原本的内容,而最后一个遍历到的节点第一个输出,这就是一个典型的“后进

2021-08-06 15:55:42 55

原创 剑指 Offer 05. 替换空格

LeetCode地址:剑指 Offer 05. 替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000第一种方法 遍历添加在Java种字符串String在声明变量后是不可变的,即如果需要对字符串进行修改增加操作都需要重新申请一个新的字符串变量,进而出现了可变长度的字符串StringBuffer和StringB

2021-08-06 11:46:30 56

原创 剑指 Offer 04. 二维数组中的查找

LeetCode地址:剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 2

2021-08-05 12:02:25 152

原创 剑指Offer03.数组中重复的数字

找出数组中重复的数字。题目描述在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000第一种解法先把输入的数组排序,之后从排序的数组种找出重复的数字时间复杂度 O(nlogn) 空间复杂度O(1)public int find

2021-08-04 20:20:13 77

原创 哈希表的学习

哈希表数组+链表数组+二叉树哈希表的基本介绍​ 散列表(Hash table 也叫哈希表),是根据关键码值(Key Value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度,这个映射函数叫做散列函数,存放记录的数组叫做散列表。##Google的上机题1)有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的所有信息.2)要求:不使用数据库,尽量节省内存,速度越快越好

2021-07-16 14:56:32 80

原创 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...

2019-11-23 21:12:59 160

原创 整数反转

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。这道题不像以前的题那样是完...

2019-09-10 14:12:56 165

原创 C语言人见人爱A-B

c语言做人见人爱A-B参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下)呵呵,很简单吧?Input每组输入数据占1行,每行数据的开始是2个整数n(0&lt;=n&lt;=100)和m(0...

2019-03-16 20:31:43 85

空空如也

空空如也

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

TA关注的人

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