自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。

本题目来自与牛客网。解题思路:利用辅助栈来存储现有栈的最小值。在入栈和出栈的时候将现有栈和最小值栈进行比较。入栈时,若新值比最小值栈的栈顶还小,则将该值同时push到最小值栈;出栈时,若现有栈的栈顶和最小值栈栈顶一致,则同时出栈,否则,仅仅现有栈pop;通过这一操作,最小值栈的栈顶将永远是现有栈元素中的最下值。class Solution {public:stack<int> my...

2018-07-11 22:35:44 4183

原创 树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)本体思路:为了保持代码的鲁棒性,我们首先要判断AB是否为空,为空则返回false;然后我们就可以开始判断B是否为A的子树了,我们可以想到,若B为A的子树,那么从B的根结点开始就可以在A找到相同的结点,并且从这个结点开始,每一个结点的左右子树均相同,直至B为空,若A提前为空,那么错误。从A开始查找,我们当然要从...

2018-07-04 20:51:00 129

原创 合并两个排序链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。1.不构造新的链表,在原有的链表的基础上拼接/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ...

2018-07-04 19:58:53 135

原创 输入一个链表,输出该链表中倒数第k个结点。

本题目可以通过两个指针,只对链表遍历一遍,既可以得到倒数第K个结点。第一个指针领先第二个指针K步。但是一定要注意代码的鲁棒性。比如,头节点即为NULL,比如K<=0,比如结点总数小于K,都要进行判断,返回空。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NUL...

2018-07-04 16:44:17 156

原创 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

原码:原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。不能直接参与运算,因为其首位表示符号位。补码:正整数的补码是其二进制表示,与原码相同求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1注:在计算机中,正数是...

2018-07-03 22:00:10 242

原创 青蛙跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。可以用递归的思想来分析这个问题:假设最后剩下一个台阶,那么仅有一种跳法,假设最后剩下两个台阶,那么还有两种跳法(一次跳一个,跳两次;一次跳两个,跳一次)。所以我们可以分析得到sum=f(n-1)+f(n-2);倒推发现这也就是斐波那契数列。所以这个题目就可以用递归的方法来解决,但是递归又十分消耗空间,所以我们...

2018-06-29 13:11:06 106

原创 KMP算法

参考:https://www.cnblogs.com/c-cloud/p/3224788.htmlnext[]数组的作用就是求解模式串中,已匹配部分的串前缀和后缀公有最长缀的长度#include <iostream>#include<string>using namespace std;void MakeNext(string child_str,int *next)//求...

2018-06-28 20:02:06 102

原创 斐波那契数列求解的四种方法

#include <iostream>#include<vector>#include <stack>using namespace std;int Fibonacci_01(int n)//递归(容易造成栈溢出){ if (n<3) return 1; return Fibonacci_01(n-1) + Fibonacci_01(n-2);}int ...

2018-06-27 22:49:42 1322

原创 统计整数区间中1出现的次数

题目描述:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。题目分析:考虑从低位开始,进行循环加1,逢十进一。在某一位上“1”出现的次数受高位和低位的共同作用。以“百”...

2018-06-05 22:47:39 292

原创 翻转单词序列。

题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?在这里有两种处理方法:一种是...

2018-06-05 22:01:32 99

原创 模拟strstr()函数

题目描述:模拟strstr()函数,返回值为主串中字符子串的位置以后的所有字符。不能使用c程序中已有的函数。const char* StrStr(const char* string, const char*str_set){ for (int i = 0; string[i] != '\0'; i++) {  int j = 0;  int tmp_num = i;  if (string[i]...

2018-06-05 20:55:06 103

原创 寻找字符串中重复子串最长的字符串。

题目描述:输入一字符串,找出其中出现的相同且长度最长的字符串,输出该子串及其首字符的位置。目前想到比较暴力的解法,把该字符串中所有可能的子串从最长的开始寻找。int main(){ string str,tmp_str; cin >> str; for (int i = str.length() - 1; i > 1; i--) {  for (int j = 0; j <...

2018-06-05 20:28:51 2835

原创 求一个字符串中连续出现次数最多的子串

//求一个字符串中连续出现次数最多的子串pair<int, string> fun(const string &str){ int maxcount = 1, count = 1; string substr; int i =0, j = 0; int len = str.length(); int k = i + 1; while (i < len){ j = str...

2018-06-04 22:01:06 1237

原创 用户研究中的定性研究、定量研究

定性研究:通常是对小数量规模的样本进行分析,发现新事物的过程。样本数量通常为10~20个,。虽然定性研究无法证明任何事情,但是可能会带来一些全新的见解和有价值的事情。比如用户访谈和可用性测试,小规模的调查问卷定量研究:则是对大规模的样本进行分析,这样会发现真正的趋势。比如在线大规模调查问卷和网站日志分析定量研究适用于揭露正在发生的事情,定性研究适用于揭露为什么会发生这样的事情定量研究:人们说了什么...

2018-06-04 16:27:28 7548

转载 PV、UV、IP(运营和网站管理中常用的概念)

2018-06-04 16:09:59 6283

原创 旋转数组的最小数字

题目描述(来源于   剑指offer)把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。注意:旋转数组的定义是将头部整体搬移到尾部!!!而不是翻转!!!思路:1暴力循环遍历...

2018-06-01 17:43:01 105

原创 重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。先序(也就是先根),中序(也就是中跟)。因为先序遍历的操作是:先根节点遍历,然后遍历右子树节点;中序遍历的操作是:先遍历左子树,然后根节点,然后右子树节点。...

2018-05-31 22:17:01 108

原创 从尾到头打印链表

题目要求:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/***  struct ListNode {*        int val;*        struct ListNode *next;*     ...

2018-05-31 22:09:11 92

原创 字符串替换

题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。本题目有两种思路:一种是不额外开辟空间,直接在原字符串数组上进行插入移动(从后插入,这样保证移动数据次数少),另外一种思路是建立原字符串数组的一个副本,然后遍历副本,重建原字符串数组。class Solution {public:    ...

2018-05-31 22:02:55 152

原创 二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。本题目有两种思路:一种即为最简单的,暴力查找,对整个二维数组进行遍历查找,最坏的情况是遍历整个数组。另外一种思路,则是根据题目要求,得到数组的排布规律,从左下角开始查找:如果比目标小,则右移动,反之,上移。class Solution...

2018-05-31 21:55:15 115

空空如也

空空如也

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

TA关注的人

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