自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 04 二维数组中的查找

题目描述给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。Consider the following matrix:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 3...

2019-07-31 14:56:16 125

原创 05 替换空格

题目描述将一个字符串中的空格替换成 “%20”。Input:“A B”Output:“A%20B”解题思路思路一在字符串尾部填充任意字符,使得字符串的长度等于替换之后的长度。因为一个空格要替换成三个字符(%20),因此当遍历到一个空格时,需要在尾部填充两个任意字符。令 P1 指向字符串原来的末尾位置,P2 指向字符串现在的末尾位置。P1 和 P2 从后向前遍历,当 P1 遍历...

2019-07-31 14:56:08 119

原创 06 从尾到头打印链表

题目描述从尾到头反过来打印出每个结点的值。解题思路思路1——递归要逆序打印链表 1->2->3(3,2,1),可以先逆序打印链表 2->3(3,2),最后再打印第一个节点 1。而链表 2->3 可以看成一个新的链表,要逆序打印该链表可以继续使用求解函数,也就是在求解函数中调用自己,这就是递归函数。思路2——头插法使用头插法可以得到一个逆序的链表。头结点和第一个...

2019-07-31 14:56:00 109

原创 10 斐波那契数列+ 矩形覆盖+跳台阶

10.1 斐波那契数列题目描述求斐波那契数列的第 n 项,n <= 39。解题思路1.递归下面的递归方法复杂度太高,无法通过;class Solution {public: int Fibonacci(int n) { if(n < 0) return 0; if(n == 0 || n == 1) ...

2019-07-31 14:55:47 137

原创 24 反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。思路解析采用递归的方式输入: A --> B --> C --> null输出: C --> B --> A --> null首先是A,先将A的next存下来temp,然后将A的next改成null,根据temp(B)进入递归,将B的next存下来temp(C),然后B的next改成null,再根据...

2019-06-17 21:46:29 100

原创 23 链表中环的入口结点

题目描述一个链表中包含环,请找出该链表的环的入口结点。要求不能使用额外的空间。解题思路使用双指针,一个指针 fast 每次移动两个节点,一个指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。假设相遇点在下图的 z1 位置,此时 fast 移动的节点数为 x+2y+z,slow 为 x+y,由于 fast 速度比 slow 快一倍,因此 x+2y+z=2(x...

2019-06-13 21:40:02 100

原创 22 链表中倒数第 K 个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。解析设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。/*struct ListNode { int val; stru...

2019-06-13 21:38:51 183

原创 21 调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路(1)统计当前数组中的奇数个数odd;(2)创建临时数组copy当前数组;(3)遍历临时数组,若是奇数,就从原数组的起始位置开始插入,若是偶数,就从odd位置开始插入。代码class Solution ...

2019-06-13 21:15:39 89

原创 20 表示数值的字符串

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。解题思路首先判断有没有+ -号然后判断数字的个数、小数点的个数、字母e的个数,注意小数点和字母e的个数分别只能最多一个。号除了出现...

2019-06-13 21:09:05 140

原创 19正则表达式匹配

题目描述请实现一个函数用来匹配包括 ‘.’ 和 ‘’ 的正则表达式。模式中的字符 ‘.’ 表示任意一个字符,而 '’ 表示它前面的字符可以出现任意次(包含 0 次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串 “aaa” 与模式 “a.a” 和 “abaca” 匹配,但是与 “aa.a” 和 “ab*a” 均不匹配。解题思路应该注意到,’.’ 是用来当做一个任意字符,而 ...

2019-06-13 21:01:40 184

原创 18 链表节点的删除

包括两个题目(一)题目描述在 O(1) 时间内删除链表节点解题思路① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,...

2019-06-13 20:51:20 117

原创 17 打印从 1 到最大的 n 位数

题目描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。解题思路由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 char 数组进行存储。使用回溯法得到所有的数。...

2019-06-13 20:37:18 87

原创 16 数值的整数次方

题目描述给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent,求 base 的 exponent 次方。解题思路下面的讨论中 x 代表 base,n 代表 exponent。因为 (x*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。代码class Solution {public: ...

2019-06-12 23:59:40 118

原创 15 二进制中 1 的个数

题目描述输入一个整数,输出该数二进制表示中 1 的个数。解题思路使用 n&(n-1)可以去除n的位级表示中最低的一位。即,每一次这个操作可以去除一个1,直到全为0,记录循环的次数即可。class Solution {public: int NumberOf1(int n) { int cnt = 0; while( n != 0)...

2019-06-12 23:51:02 184

原创 14剪绳子

题目描述把一根绳子剪成多段,并且使得每段的长度乘积最大。解题思路思路一:贪心尽可能多剪长度为 3 的绳子,并且不允许有长度为 1 的绳子出现。如果出现了,就从已经切好长度为 3 的绳子中拿出一段与长度为 1 的绳子重新组合,把它们切成两段长度为 2 的绳子。证明:当 n >= 5 时,3(n - 3) - n = 2n - 9 > 0,且 2(n - 2) - n = n -...

2019-06-12 23:46:13 111

原创 13机器人的运动范围

题目描述地上有一个 m 行和 n 列的方格。一个机器人从坐标 (0, 0) 的格子开始移动,每一次只能向左右上下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 k 的格子。例如,当 k 为 18 时,机器人能够进入方格 (35,37),因为 3+5+3+7=18。但是,它不能进入方格 (35,38),因为 3+5+3+8=19。请问该机器人能够达到多少个格子?解题思路使用深度优...

2019-06-12 23:20:46 170

原创 12 矩阵中的路径

题目描述判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向上下左右移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如下面的矩阵包含了一条 bfce 路径。解题思路使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行...

2019-06-12 19:45:02 173

原创 11 旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路思路1直接用sort函数对vector进行排序,默认是升序,返回容器的第一个值即可。运行时间:3...

2019-05-29 22:42:14 90

原创 09 用两个栈实现队列

题目用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。解题思路in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。代码class Solution{pub...

2019-05-29 19:04:19 113

原创 08 二叉树的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路(1)如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点;(2)否则,向上找第一个左链接指向的树包含该节点的祖先节点。代码代码片/*struct TreeLinkNode { int val; str...

2019-05-29 16:40:02 97

原创 07 重建二叉树

题目描述根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。代码流...

2019-05-29 16:15:22 99

原创 03 数组中重复的数字

数组中重复的数字题目描述思路代码流程代码片段题目描述在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路第一反应就是写嵌套的for循环,但是可想而知,必然时间复杂度...

2019-05-29 10:06:28 76

原创 《图解TCP/IP》读书笔记

第一章 网络基础知识1.1 计算机网络出现的背景从独立模式到网络互连模式从计算机通信到信息通信1.2 计算机与网络发展的7个阶段(1)批处理:事先将用户程序和数据装入卡带或磁带,由计算机按一定的顺序读取,使用户所要执行的这些后曾虚和数据能够一并批量得到处理的方式。(2)分时系统(TSS):多路性、独占性、交互性、及时性(3)计算机之间的通信:(4)计算机网络的产生:(5)互联网的...

2019-02-27 15:13:55 242

原创 ubuntu16.04安装wireshark

ubuntu16.04安装wireshark安装wireshark$ sudo apt install wireshark配置wireshark$ sudo dpkg-reconfigure wireshark-common选择yes,非root用户也能抓包安装完成之后查看用户组,查看已创建wireshark用户组$ cat /etc/group |grep wiresharkw...

2018-12-11 16:36:15 443

空空如也

空空如也

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

TA关注的人

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