自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer——把字符串转换成整数

题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647 1a33输出2147483647 0解题思路:主要...

2019-11-13 21:39:25 111

原创 剑指offer——构建乘积数组**

题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。解题思路:B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]可分为C[i] + D[i]C[i] =A[0]*A[1]*......

2019-11-13 20:03:12 106

转载 一文搞懂 RSA 算法

如果没有 RSA 算法,现在的网络世界毫无安全可言,也不可能有现在的网上交易。上一篇文章 ssh 协议为什么安全 中的 ssh 协议也是基于 RSA 加密算法才能确保通讯是加密的,可靠的。1976年以前,所有的加密方法都使用对称加密算法:加密和解密使用同一套规则。例如:甲使用密钥 A 加密,将密文传递给乙,乙仍使用密钥 A 解密。如果密钥 A 在甲传递给乙的过程中泄露,或者根据已知的几次密文和...

2019-11-12 23:14:09 189

原创 剑指offer——不用加减乘除做加法**

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路:首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果直到他们的进位是0,上述两步的结果是2和1...

2019-11-12 21:32:51 102

原创 剑指offer——求1+2+3+…+n

题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解题思路:使用递归计算,但由于不能使用if所以终止条件利用&&的特点来实现。res&&(res+=Sum_Solution(n-1)),当res等于0时,&&后面的内容就不需要再判...

2019-11-12 20:37:32 113

原创 剑指offer——股票的最大利润*

题目描述:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5,7, 12, 16, 14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。解题思路:每次求以第i个价格出售的最大利润(只能当前价格减去此前的最低价),维护一个最大利润,同时维护一个最低价(...

2019-11-12 20:21:22 119

原创 剑指offer——圆圈中最后剩下的数字(孩子们的游戏)

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.....

2019-11-12 19:31:26 125

原创 剑指offer——扑克牌顺子

题目描述:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。解题思路:0的个数>=不连续的个数且不含对子即是顺子从书中的意思来看,这个顺子不是真正的顺子,扑克牌中Q、K、A是顺子,但在这里Q、K、A分别是12、13、1不是顺子,忽略了这第一点题目就简单了。c...

2019-11-12 19:06:31 121

原创 剑指offer——翻转字符串*

题目一:翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。解题思路:先将整个字符串翻转,在分别把每个单词翻转。class Solution {public: void Reverse(string&...

2019-11-12 18:50:44 132

原创 剑指offer——滑动窗口的最大值**

题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...

2019-11-12 18:20:26 100

原创 剑指offer——和为S的数字*

题目一:和为S的两个数字输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。解题思路:设置两个指针分别指向数组的首位和末位,如果两个指针指向的数字和大于sum尾指针向前移动一位,若小于sum首指针向后移动一位,若与sum相等表示找到了,保存退出...

2019-11-12 11:49:53 97

原创 剑指offer——空格替换

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:统计空格个数和原始字符串的长度,计算替换后的长度,然后从后往前复制,这样可以一次性将所有字符移动到最终位置,能减少字符的重复移动。如果从前往后复制,空格越多,越往后面的字符重复移动的次数越多。clas...

2019-11-12 11:22:11 115

原创 剑指offer——第一个只出现一次的字符

题目一:字符串中第一个只出现一次的字符在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).解题思路:直接打表class Solution {public: int FirstNotRepeatingChar(string str) { i...

2019-11-12 08:48:29 90

原创 剑指offer——重建二叉树**

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:前序遍历序列的第一个值为根节点,根据这个根节点在中序遍历序列中找到根节点,该节点之前是左子树,之后是右子树,以此递归建立左右子树...

2019-11-12 00:38:03 106

原创 剑指offer——数组中数字出现的次数

题目一:数组中只出现一次的两个数一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路:方法一:哈希表这个比较容易想到,但是需要额外的空间class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *...

2019-11-11 19:18:53 100

原创 剑指offer——平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路:如果子树是平衡二叉树,则返回子树的高度;如果发现子树不是平衡二叉树,则直接停止遍历,class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { return IsBalanced(pRoot)!=-1; ...

2019-11-11 18:51:33 78

原创 剑指offer——二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题思路:二叉树的深度等于它的左右子树中深度更大的那个值加一/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int ...

2019-11-11 18:36:57 83

原创 剑指offer——二叉搜索树的第K个节点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。解题思路:根据二叉搜索树的特性,中序遍历的序列就是从小到大的排序。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode...

2019-11-11 18:32:37 86

原创 剑指offer——在排序数组中查找数字

题目一:数字在排序数组中出现的次数统计一个数字在排序数组中出现的次数。解题思路:方法一:直接遍历一遍,O(n)的时间复杂度。方法二:二分查找,时间复杂度度更优分别二分查找第一个k的位置和最后一个k的位置class Solution {public: int GetNumberOfK(vector<int> data ,int ...

2019-11-11 18:13:10 131

原创 剑指offer——两个链表的第一个公共节点

题目描述输入两个链表,找出它们的第一个公共结点。代码:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindFirstCommonNod...

2019-11-11 17:35:17 79

原创 剑指offer——丑数*

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路:从第一个丑数开始,所有丑数都是由前面的某一个丑数乘以2或者3或者5,要做的是确定他们的大小顺序来得到第n个丑数。找到一个丑数MinUgly后,下一个丑数是之前所有丑数2倍、...

2019-11-11 11:40:18 101

原创 剑指offer——最长不含重复字符的子字符串

题目描述:找出一个字符序列中一个最长的包含不重复字符的子字符串,比如在字符串“arabcacfr”中,最长的不含重复字符的子字符串是“acfr”,长度为4。解题思路:用f(i)表示以第i个字符结尾不包含重复字符的子字符串的最长长度,从左向右扫描1、若第i个字符在之前没出现过,则 f(i) = f(i-1) + 1;2、若第i个字符在之前出现过,计算第i个字符距离上次出现之...

2019-11-07 22:04:23 130

原创 剑指offer——礼物的最大值

问题描述:在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或者向下移动一格直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物?解题思路:动态规划。对于每个格子(第0行、第0列除外)它可能是从正上方的格子过来能得到最大值,也可能从正左方的格子过来取得最大值,...

2019-11-07 20:31:57 176

原创 剑指offer——数据流中的中位数*

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路:用一个最大堆和一个最小堆来保存数据左边是最大堆,右边是最小堆,这样只要保...

2019-11-07 20:03:38 92

原创 剑指offer——把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路:定义一种排序方法,如:数字M、N,若组成数字MN>NM,则M>N,否则M<N。同时考虑到数字相加后可能超过int范围,所以用字符串来处理。直接使用string来进...

2019-11-07 19:56:22 92

原创 剑指offer——连续子数组的最大和*

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...

2019-11-07 19:37:07 94

原创 pat.1047 编程团体赛

1047编程团体赛(20分)编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。现给定所有队员的比赛成绩,请你编写程序找出冠军队。输入格式:输入第一行给出一个正整数N(≤10​4​​),即所有参赛队员总数。随后N行,每行给出一位队员的成绩,格式为:队伍编号-队员编号 成绩,其中队伍编号为 1 到 1000 的...

2019-11-04 10:15:17 213

空空如也

空空如也

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

TA关注的人

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