小R天天写程序
文章平均质量分 59
小R同学
这个作者很懒,什么都没留下…
展开
-
最小的K个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,Tips:使用set模板函数时注意:set不能用下标,只能用迭代器来进行操作,insert和erase1.:利用堆排序,O(N logK),适合处理海量数据(1) 遍历输入数组,将前k个数插入到推中;(利用multiset来做为堆的实现)(2) 继续从输入数组中读原创 2018-01-12 15:28:14 · 129 阅读 · 0 评论 -
剑指Offer之正则表达式匹配
题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配class Solution {public: bool match(char* st...原创 2018-04-19 10:29:21 · 150 阅读 · 0 评论 -
表示数值的字符串
class Solution {public: bool isNumeric(char* string) { if(string==NULL||* string=='\0') return false; bool num,sign,hase,has; num=false; has=false; ...原创 2018-04-23 14:21:23 · 122 阅读 · 0 评论 -
字符流中第一个不重复的字符(哈希表)
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。class Solution{public: //Insert one char from stringstre...原创 2018-04-24 10:42:01 · 184 阅读 · 0 评论 -
链表中环的入口节点
一个链表中包含环,请找出该链表的环的入口结点。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* EntryNodeOfLoo...原创 2018-04-24 11:41:46 · 96 阅读 · 0 评论 -
序列化、反序列化二叉树 字符串 string char
请实现两个函数,分别用来序列化和反序列化二叉树用特殊字符标记空“#”, 字符和字符之间 "," /*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NU...原创 2018-05-02 18:27:15 · 307 阅读 · 0 评论 -
删除链表中重复的结点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...原创 2018-04-25 12:54:37 · 85 阅读 · 0 评论 -
二叉树下一个节点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。1.此节点有右子树,下一个节点为右子树的最左节点2.无右子树它是其父节点的左节点 返回父节点他是其父节点的右节点 一直向上找,直至找到一个节点为其父节点的左节点,返回这个节点的父节点。/*struct TreeLinkNode { int va...原创 2018-04-25 14:39:38 · 126 阅读 · 0 评论 -
二叉搜索树第k个节点(中序遍历保留每层count)
题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。1.最容易想到的情况,中序遍历保存在vector里,复杂度为o(n)/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; ...原创 2018-05-03 18:54:22 · 311 阅读 · 0 评论 -
机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?class Solution {public:...原创 2018-05-10 11:44:19 · 243 阅读 · 0 评论 -
二叉树遍历
递归方式void prePrint_r(TreeNode* root) //前序遍历{ if(root==NULL) return ; cout<<root->val; if(root->left) midPrint_r(root->left); if(root->right) midPrint_r(root->right)...转载 2018-04-26 10:52:30 · 124 阅读 · 0 评论 -
对称二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL)...原创 2018-04-26 11:34:11 · 111 阅读 · 0 评论 -
cin小知识
int count;while(ch!='#'){cout<<ch;cin>>ch;}输入:see ken tun#ree输出:(按了回车之后)seekentun 在按了回车之后,输入的内容才会被发送给程序,在之前被缓冲。并且cin忽略换行符和空格!!!...原创 2018-05-17 16:42:50 · 171 阅读 · 0 评论 -
堆排序
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。class Solution {public: void Insert(int num) { // 若是偶数,先插进最小堆 if((max.size()+min...原创 2018-05-04 16:40:09 · 128 阅读 · 0 评论 -
滑动窗口的最大值(双端队列deque)
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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,5,...原创 2018-05-07 10:13:27 · 674 阅读 · 0 评论 -
矩阵中的路径(回溯法)
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了...原创 2018-05-08 10:16:19 · 269 阅读 · 0 评论 -
被3整除(网易实习生第2题)
链接:https://www.nowcoder.com/questionTerminal/51dcb4eef6004f6f8f44d927463ad5e8来源:牛客网小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。 并且小Q对于能否被3整除这个性质很感兴趣。 小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有...原创 2018-05-15 10:02:31 · 208 阅读 · 0 评论 -
剑指offer 之约瑟环(用vector实现)
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.......原创 2018-04-13 11:22:48 · 283 阅读 · 0 评论 -
构建乘积数组
题目描述给定一个数组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]。不能使用除法。class Solution {public: vector<int> multiply(const vector<int>& A) { ...原创 2018-04-18 11:04:27 · 80 阅读 · 0 评论 -
二叉树按层打印(借用queue)
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class TreePrinter {public: ...原创 2018-04-17 21:34:41 · 798 阅读 · 0 评论 -
字符串的排列
class Solution {public: vector Permutation(string str){ Permutationmethod(0, str); return vec; } void Permutationmethod(int k,string str){ if(k==str.size()-1)原创 2018-01-08 18:44:31 · 132 阅读 · 0 评论 -
数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。法1:相互抵消法,若存在一个数字超过一半,则肯定是两两相间的情况下还要多出一个以上相连,但要考虑,有不存在超过一半数字的情况出现,所以要重新计算出现的次数,避免定位到最后一个数字却不原创 2018-01-09 16:13:04 · 147 阅读 · 0 评论 -
二分查找--数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。看到有序数组,第一反应就应该是二分查找,复杂度为O(logn),比从头到尾扫描复杂度O(n)效率高。分别用二分查找法第一次和最后一次出现的数字的下标,相减即可、class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int number=0; ...原创 2018-03-07 17:09:28 · 727 阅读 · 0 评论 -
平衡二叉树
1.二叉树的深度用递归的方法,深度应为节点左子树和右子树中深度最大的子树的深度+1。若只有左子树或只有右子树,则为子树的深度+!; int TreeDepth(TreeNode* pRoot) { if(pRoot==NULL) return 0; int left=TreeDepth( pRoot->left); int righ...原创 2018-03-08 15:14:07 · 253 阅读 · 0 评论 -
剑指offer35/36
1.第一个只出现一次的字符一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。简单题。①用数组存放字符,char转int ②用map<char,int>存储class Solution {public: int FirstNotRepeatingChar(string str) { map<char, int&...原创 2018-03-01 18:49:10 · 161 阅读 · 0 评论 -
第一个幸运数字(子串)
题目:定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。比如说,47、744、4都是幸运数字而5、17、467都不是。现在,给定一个字符串s,请求出一个字符串,使得:1、它所代表的整数是一个幸运数字;2、它非空;3、它作为s的子串(不是子序列)出现了最多的次数(不能为0次)。请求出这个串(如果有多解,请输出字典序最小的那一个)。#include <iostream>#inclu...原创 2018-03-17 10:58:01 · 1050 阅读 · 0 评论 -
幸运数字2
题目:定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。比如说,47、744、4都是幸运数字而5、17、467都不是。定义next(x)为大于等于x的第一个幸运数字。给定l,r,请求出next(l) + next(l + 1) + ... + next(r - 1) + next(r)。#include <iostream>#include <cmath>#inc...原创 2018-03-17 11:20:46 · 1802 阅读 · 0 评论 -
数组中只出现一次的数字
题目:”一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。1.利用STL略。注意形参为指针,复制的是地址,若想改变指针应改变指向的地址的值。即*p2.利用异或,典型题。如果将所有所有数字相异或,则最后的结果肯定是那两个只出现一次的数字异或 的结果,所以根据异或的结果1所在的最低位,把数字分成两半,每一半里都还有只出现一次的数据和成对出现的数据 这样继...原创 2018-03-12 20:19:44 · 152 阅读 · 0 评论 -
带有限制条件的Dijkstra算法
Dijkstra_算法加入限制条件,如:首先从S点出发,终点是E,图中寻找最优路径,其中N2-N4,N13-N14为必走线段,N7,N12为不可走的点,N12-N11为不可走的线段,要求在九个点之内,到达终点。Dijkstra用到的存储结构:int dist[maxnum]; // 源节点到节点i的distprev[maxnum];//节点i的前节点 int c[maxnum][maxnum...原创 2018-03-06 10:52:23 · 2638 阅读 · 0 评论 -
反转字符串
题目:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?class Solution ...原创 2018-03-19 20:22:17 · 522 阅读 · 0 评论 -
积累
1.strstr(str1,str2) 函数(用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。char str2 = “cdef”; char str1 = “abcdefgh”; 则通过函数,将返回 strstr(str1,str2) = cdefgh;2..c_str()可以把string类型,转成c语言的str类型,再使...转载 2018-03-23 14:17:22 · 125 阅读 · 0 评论 -
函数积累
1.char *fgets(char *buf, int n, FILE *fp)FILE * fp = fopen(argv[1],"r");char buf[200];while (fgets(buf,200,fp) != NULL) { /* 每行的字符不能超过199才能正常工作 */ printf("%s",buf);}fgets函数的调用形式如下:fgets(st...原创 2018-03-20 11:06:21 · 255 阅读 · 0 评论 -
int to string
#include <sstream>string Trans(int ss){ string str; stringstream st; st << ss; st >> str; return str;}转载 2018-04-01 10:43:25 · 152 阅读 · 0 评论 -
类复习
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。class Help{public: Help() { N++;sum+=N; }static int getsum(){ return sum;} static void reset()...原创 2018-04-16 15:07:25 · 118 阅读 · 0 评论 -
重载、覆盖、隐藏
重载: 只有在 同一类定义中的同名成员函数才存在重载关系 ,主要特点是 函数的参数类型和数目有所不同 ,但 不能出现函数参数的个数和类型均相同 ,仅仅依靠返回值类型不同来区分的函数,这和普通函数的重载是完全一致的。另外,重载和成员函数是否是虚函数无关覆盖: 在派生类中覆盖基类中的同名函数,要求两个函数的参数个数、参数类型、返回类型都相同,且基类函数必须是虚函数。隐藏: 派生类中的函数...转载 2018-04-16 21:43:50 · 113 阅读 · 0 评论 -
剑指Offer之字符串转整数
atoi库函数:用来字符串对整数的转换。atoi通过一个全局变量来区分字符串是0和字符串为空的返回值都为0的情况,如果是非法输入,返回0并且把这个全局变量设为一个特殊标记,如果输入时“0”,不会设置全局变量。题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0class Solution {public: int StrT...原创 2018-04-17 10:44:51 · 128 阅读 · 0 评论 -
牛牛找工作(网易实习生第1题)哈希表 lower_bound upper_bound
map::lower_bound(key):返回map中第一个大于或等于key的迭代器指针map::upper_bound(key):返回map中第一个大于key的迭代器指针为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们...原创 2018-05-15 10:30:08 · 421 阅读 · 0 评论