自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 极小化极大和动态规划之间的故事 3

极小化极大和动态规划之间的故事 3Leetcode 375:猜数字大小2 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。 然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。直到你猜到我选的数字,你才算赢得了这个游戏。示例:n...

2020-06-19 19:27:21 182

原创 一个简陋线程池的实现

一个简陋线程池的实现1 线程池的工作原理线程池是什么?顾名思义,线程池就是一个放着若干线程的池子。整个线程池的工作原理是这样的,在一个池子里有若干个线程,此外还有任务队列,当任务队列为空的时候,线程池的所有线程也处于休眠(阻塞)状态;当任务队列中有任务的时候,需要唤醒线程来拿走任务队列中的任务;新任务产生的时候,这个任务会进入任务队列,等待线程来执行它。也就是说,我们需要维护两个数据结构,一个...

2020-03-29 15:55:12 171

原创 并查集的妙用——Leetcode 1202

并查集的妙用——Leetcode 1202 给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 示例 1:输入:s = "dcab",...

2020-03-02 20:52:02 414

原创 逆序对及其变种

1 逆序对首先看一下逆序对(Leetcode 剑指offer 51): 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000这也是一个经典问题,而且如果方向没对的话,是想破头也想不出来的。肯定不能暴...

2020-02-29 21:20:46 308

原创 单调栈的妙用

时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 256M,其他语言512M 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。 小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住) 输入描述: ...

2020-02-29 20:24:55 268

原创 腾讯2020校招第一次笔试第1题

小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么? 输入描述:输入第一行包含一个...

2020-02-27 20:39:14 809

原创 实现了个残废文件系统

假装实现了个文件系统事先说明,虽然说这次的课设要求是实现fuse提供的接口,但是至少出现在这里的内容,和fuse没有任何关系,所以想要一字不动地拿过去当成课设最后成果的,就用不着往下看了。1 模拟磁盘文件1.1 创建磁盘文件文件是放在磁盘上的,而用户态是没有办法直接访问磁盘的。因此想要直观地观察到磁盘内的信息,并不是一件容易的事。好在,我们可以用一个文件模拟磁盘,然后再这个文件上进行文件读...

2020-02-18 16:18:19 225

原创 打家劫舍——leetcode 198 & 213 & 337

打家劫舍——leetcode 198

2020-02-11 11:38:02 83

原创 ucore lab2 练习2&3

ucore lab2 练习2&3回忆一下之前的练习1,我们填写了default_pmm.c中的一些函数,也实现了内存分配的first fit算法。但是,其实我们并不是很清楚,default_pmm.c这个文件在整个lab2中的位置,也就是说,这个文件中的函数,到底在哪些地方被调用了呢?想要解决这个问题,首先要搞清楚物理内存管理器pmm_manager。物理内存管理器pmm_manage...

2020-02-01 11:16:02 368

原创 极小化极大和动态规划之间的故事 2

极小化极大和动态规划之间的故事 2今天我们继续上次没有讲完的故事。1 我能赢吗Leetcode 464: 在 "100 game" 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和达到 100 的玩家,即为胜者。 如果我们将游戏规则改为 “玩家不能重复使用整数” 呢? 例如,两个玩家可以轮流从公共整数池中抽取从 1 到 15 的...

2020-01-30 15:28:50 1508

原创 极小化极大和动态规划之间的故事 1

极小化极大和动态规划之间的故事今天探讨一下极小化极大和动态规划之间的联系。1 为什么这两者会有联系?动态规划问题的关键是,能把一个大问题拆分成若干个小问题,并且这些小问题被重复调用;而极小化极大很多时候被用来解决博弈问题,两个人博弈到最后,问题规模通常来说都会变得更小(比如说下棋下到最后双方剩下的子力都很少)。因此这两者之间有联系是合理的。具体这两件事之间到底有什么关系,通过一些难度不大的问...

2020-01-17 10:51:26 321

原创 Leetcode 231 & 326 & 342 2,3,4的幂

Leetcode 231 & 326 & 342 2,3,4的幂Leetcode 231 2的幂:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: falseLeetcode 326 3的幂:...

2020-01-16 14:59:28 148

原创 一次错误但是勇敢的尝试——Leetcode 89 格雷编码

一次错误但是勇敢的尝试——Leetcode 89 格雷编码 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯...

2020-01-13 14:04:21 146

原创 Leetcode 169 & 229 求众数

Leetcode 169 & 229 求众数Leetcode 169: 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2Leetcode ...

2020-01-12 12:47:21 134

原创 这样的数组,也能二分查找吗——Leetcode 33 & 81 搜索旋转排序数组

这样的数组,也能二分查找吗——Leetcode 33 & 81 搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 (例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2])。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。 你可以假设数组中不存在重复的元素。 你的算...

2020-01-12 10:49:11 153

原创 能迭代就不要递归——Leetcode 230 二叉搜索树中第k小的元素

能迭代就不要递归——Leetcode 230 二叉搜索树中第k小的元素给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例 2:...

2020-01-09 09:32:34 154

原创 用合适的数据结构,事倍功半——leetcode 21 & 23

用合适的数据结构,事倍功半——leetcode21 & 23先看23题:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题目是很简单的,它也的确就是个easy题。直接上代码:/** * D...

2019-11-17 20:39:45 135

原创 相交链表——leetcode 160

相交链表——leetcode 160编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。这个题要求不少,不过难度其实不大。我们的问题就是,两个头结点距离与终点的距...

2019-11-16 22:23:21 172

原创 链表排序居然比数组排序还简单?——leetcode 148 (1)

链表排序居然比数组排序还简单?——leetcode 148 (1)在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5我们...

2019-11-16 15:43:13 348

原创 环形链表和反转链表——leetcode 141 & 142 & 206 & 92

今天为什么把这么多题目放到一起去讲呢?我们先看题,等等就知道这几道题之间有什么联系了。环形链表先看141题:这个题难度是easy,说明如果想要做出来的话,其实是很简单的。如果链表中存在环,那么我们从头结点出发,一路往下走,总会有某个时候到达一个之前经过的结点。因此,我们把经历过的结点都保存下来,每到达一个结点都检查这个结点是否到达过,就可以了。在这道题里,我们只需要记录每个结点的地址就可...

2019-11-13 22:11:48 278

原创 同样都是O(n^2)的时间复杂度,凭什么我的不能过?——leetcode 15 三数之和

同样都是O(n2)的时间复杂度,凭什么我的不能过?——leetcode 15 三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:...

2019-11-06 21:34:28 377

原创 链表还能这样写?——ucore lab2 练习1(1

ucore lab2

2019-11-05 23:09:45 248

原创 easy不要轻视,想办法让代码更简洁——leetcode 7 整数反转

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

2019-10-24 20:28:06 100

原创 O(n)的dp也会TLE?——leetcode 55

O(n)的dp也会TLE?又是旧题新做,又是掉进了一样的坑。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: ...

2019-10-24 10:48:57 163

原创 O(n)的空间复杂度都会爆内存?计算机是不可能犯错的!——leetcode 5 最长回文子串

O(n)的空间复杂度都会爆内存?计算机是不可能犯错的,错的只有你——leetcode 5 最长回文子串(1)我又来啦!这次还是二进宫leetcode,做之前做过的题。这次的题,是我在leetcode上做的第一道题,年代久远,所以做过了和没做过好像也没有很大差别。先看题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad...

2019-10-22 21:15:03 193

原创 读者写者问题的三种打开方式——写者优先

读者写者问题的三种打开方式——写者优先上两篇我们分别实现了读者优先和公平竞争两种策略,如果没有特殊情况的话,这将会是这个系列的最后一篇,实现写者优先策略。老规矩,先上代码。#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include ...

2019-10-20 22:10:46 1085 3

原创 读者写者问题的三种打开方式——公平竞争

读者写者问题的三种打开方式——公平竞争在上一篇中,我们实现了读者写者问题中的读者优先策略,也提及了读者优先存在的问题,即写者饥饿。在这一篇中,我们会实现公平竞争策略。先看代码:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#includ...

2019-10-20 11:39:02 691 1

原创 读者写者问题的三种打开方式——写者优先

读者写者问题的三种打开方式——读者优先,公平竞争,写者优先

2019-10-19 22:32:27 816 1

原创 在哈希表中查找一个key的时间复杂度到底是多少?--leetcode 1

中文不出意外的话,这应该是我的第一篇博客。今天下午上课,听的东西完全不进脑子,状态奇差,于是打开几个月没碰的leetcode找找状态,顺便复习一下以前做过的题。没想到才做leetcode 1就发现事情不对劲。闲话少说,先上题。给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两 个整数,并返回他们的数组下标。你可以假设每个输入只对应一种答案,但是你不能重...

2019-10-18 22:00:39 10574 7

leetcode 1(两数之和).cpp

在哈希表中查找一个key的时间复杂度到底是多少?–leetcode 1

2019-10-18

空空如也

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

TA关注的人

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