01 2019 档案
摘要:题目: 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 思路: 简单递归。
阅读全文
摘要:题目: 给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例: 示例 1: 示例 2: 示例 3: 思路: 用一个vector保留出现节点指针的次数就完事了。 进阶一点
阅读全文
摘要:题目: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 思路: 感冒加上鼻炎,又有点头晕,30分钟才做完。这道简单题其实就是分类讨论,还要注意保留头节点的指针保留可以返回。
阅读全文
摘要:题目: 反转一个单链表。 示例: 思路: 这道题比较经典,可以用递归与循环做。先说循环的:双指针加一个保留指针,轻松搞定。 递归的有点难想呢。https://www.cnblogs.com/kubixuesheng/p/4394509.html
阅读全文
摘要:题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 思路: 浅显的思路就是遍历一遍取长度,然后再遍历一遍找到位置删除,然而这里要遍历两次,虽然时间复杂度为O(n)。进阶的想法是使用双指针,对的,又是双指针,只要保证两个指针的间隔为n,之后让前一个指针一直到末尾,两个指
阅读全文
摘要:题目: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例: 示例 1: 示例 2: 思路: 这个其实就是插入排序的一趟,需要注意的是要找出被删除节点的前一个节点。使其的下一个指针域为
阅读全文
摘要:5.2.1 Class shared_ptr shared_ptr提供了一种强大的能力:当对象被多个指针指向时,如若需要释放,仅仅需要赋值nullptr即可使其引用计数减1,而不用担心显示delete后在其他模块的指针失效。先写点简单操作。 相关函数,仅限shared_ptr相关,不包括与weak,
阅读全文
摘要:http://www.cplusplus.com/(推荐) https://en.cppreference.com/w/cpp (不FQ的话比较慢)
阅读全文
摘要:题目: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例: 示例 1: 示例 2: 思路: 先找出最小长度的,然后每个字符串匹配。O(n)
阅读全文
摘要:题目: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下: 1 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1
阅读全文
摘要:题目: 实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例: 示例 1: 示例 2: 说明: 当 needle 是空字符串时,我们应当返
阅读全文
摘要:5.1.2 Tuple(不定值的数组) tuple的模板参数可以是任意的,带来巨大的便利性。其在头文件<tuple>内。定义如下: 需要注意的几个函数如下: tuple_size<idx, tupletype>::value tuple_element<idx, tupletype>::type 注
阅读全文
摘要:5.1.1 Pair Class pair可将两个value视为一个单元,准确的说是Struct pair,定义与头文件<utility>中: 比较简单的操作就不介绍了,写几个比较少用的。 建立一个pair,元素类型分别为tuple T1,T2,以tuple t1和t2的元素为初值。 其中分段构造(
阅读全文
摘要:Linux的50个基本命令 1.ls -a 列出当前目录下的所有文件,包括以.头的隐含文件(如~/.bashrc)ls –l 列出当前目录下文件的详细信息2. pwd 查看当前所在目录的绝对路经3. cd 目录之间的移动4. mkdir目录名 创建一个目录5. rm 文件名 删除一个文件6. cat
阅读全文
摘要:题目: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 示例: 示例 1: 示例 2: 思路: 先把字符串转小写,然后使用双指针。、
阅读全文
摘要:题目: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例: 示例 1: 示例 2: 思路: 字符串类题桶是必须要熟悉的。这题也一样简单。
阅读全文
摘要:题目: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 示例:(只包含小写字符) 思路: 用一个桶来保存出现的次数,在遍历一遍即可。
阅读全文
摘要:题目: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例: 示例 1: 示例 2: 示例 3: 思路: 先统计出长度,然后根据位数乘相应的权。如下: 简介的做法:
阅读全文
摘要:题目: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例: 输入:["h","e","l
阅读全文
摘要:因为在写一些算法题,一般的在线编译器好像都是用vector作为参数,所以有必要对vector总结一下: 7.3 vector vector的本质是一个动态数组(dynamic array),类似于c用malloc分配空间。在<vector>头文件内,vector的定义如下: 注意:第二个模板参数可省
阅读全文
摘要:其实就是书上简单的多线程生产者-消费者模型 结果如下:
阅读全文
摘要:题目: 给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。 示例: 思路: 这道题我实在是想不出来,查了一下数学原理:上下翻转,沿对称轴变换即可,如下:
阅读全文
摘要:题目: 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 '.' 表示。 示例: 输入: [ ["8","3",".",".","7",".",".",".","."] , ["6","."
阅读全文
摘要:题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为
阅读全文
摘要:题目: 给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 思路: 典型的双指针题目,用一个指针找到0,用另一个指针找到非零,两者交换,同时保证非零的指针较小。 时间复杂度为O(n),看
阅读全文
摘要:题目: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。 示例: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 思路: 因为帮过舍友
阅读全文
摘要:1. gcc -E source_file.c-E,只执行到预编译。直接输出预编译结果。 2. gcc -S source_file.c -S,只执行到源代码到汇编代码的转换,输出汇编代码。 3. gcc -c source_file.c-c,只执行到编译,输出目标文件。 4. gcc (-E/S/
阅读全文
摘要:2.3.1 竞争条件 举个栗子:有两个进程同时对同一内存或磁盘上的文件进行读写,那么假设进程A先读了一段,此时内核调度让进程B进行写,那么下一次A读的就不是原来的数据了。类似这样的情况,两个或多个进程同时读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件。 2.3.2 临界区 我们
阅读全文
摘要:题目: 给定两个数组,编写一个函数来计算它们的交集。 示例: 输入: nums1 = [1,2,2,1] nums2 = [2,2] 输出: [2,2] 思路: 比较浅显的O(n^2)的做法就是用一个bool数组保存着nums2的元素是否可以被取。暂时没有什么更简便的想法。 结果就是数据量大了,内存
阅读全文
摘要:题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例: 输入: [2,2,1] 输出: 1 思路: 比较浅显的思路就是先排好序为O(nlogn);还有通过一个桶来装
阅读全文
摘要:题目: 给定一个整数数组,判断是否有重复元素。如果任何值在数组出现至少两次,函数返回true。如果数组中每个元素都不相同,返回false。 示例: 输入: [1,2,3,1] 输出: true 输入: [1,2,3,4] 输出: false 思路: 很容易想到用O(n^2)的算法,也可以先用nlog
阅读全文
摘要:题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右
阅读全文
摘要:题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例: 输入:[7,1,5,3,6,4] 输出:7 解释:在第 2
阅读全文
摘要:题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例: 给定数组 nums=[1,1,2],函数应返回新的长度为2,并且原数组nums的前两个元素被修
阅读全文
摘要:上一次刷这些已经大概在半年前了,当时只学了下基本的数据结构,也只会做简单题,而且过了就过,也没有细化,今天开始新的leetcode算法之旅。我会把第一次自写算法贴出(通常是暴力的),再与高效率的算法对比总结都贴出来。一起来吧~~
阅读全文
摘要:2.1 引言 为了解Internet如何识别主机和路由器,并在它们之间实现流量的交付。我们必须了解IP地址的作用。因此,我们对它们的管理,结构和用途感兴趣。 2.2 表示IP地址 IPv4: 采用点分四组表示法,例如:165.195.130.107。由四个八位数字表示,共32位。前面的例子的二进制表
阅读全文
摘要:2.2.1 线程的使用 对于线程的理解,我认为是在操作系统对于进程的分工上与之对应的进程对于线程的分工,本质上都是分工。 为什么需要线程?在许多应用中同时发生着许多活动,将这些活动分解成单个模块会给程序设计带来巨大的便利,不止体现在效率与分工上。比如web服务器,一个称为分派程序(dispatche
阅读全文
摘要:上个学期我主要在搞c#的桌面开发,不可否认的是,微软齐全的文档与傻瓜式的教程的确给了我很大的信心。 然而,各种天花乱坠的接口让我开发每个小项目时不得不依靠文档,与之伴随着是种种空虚感:我只知道那条接口在干什么,而不知道它实际在干什么。这种感觉在学期末让我很难受。 所以,我要把基础的东西学好。 所以,
阅读全文
摘要:2.1.1 进程模型 定义:计算机上所有可以运行的软件,操作系统,被组织成若干顺序进程,简称进程。一个进程就是一个正在执行程序的实例,包括程序计数器,寄存器,私有的虚拟地址空间。 如果计算机只有一个cpu,运行多个进程时会来回地切换进程上下文(context)。如图: 2.1.2 进程的创建 进程的
阅读全文
摘要:距离上一次写博客好像快有大半年了,至于为什么没写,懒而已。 为什么来到博客园?感觉csdn有太多商业化的东西了,所以来这里开始新的篇章。 多多关照~~
阅读全文
浙公网安备 33010602011771号