牛客网程序员面试
heisetiantang
这个作者很懒,什么都没留下…
展开
-
确定字符串互异
题目描述请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。测试样例:"aeiou"返回:True"BarackObama"返回:Falseclass原创 2018-01-13 20:48:33 · 592 阅读 · 0 评论 -
剑指offer题目3
题目描述输入一个链表,从尾到头打印链表每个节点的值。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solutio...原创 2018-03-06 18:16:13 · 168 阅读 · 0 评论 -
剑指offer题四重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * struct TreeNode { * int val; *...原创 2018-03-13 15:55:54 · 161 阅读 · 0 评论 -
剑指Offer题目1:二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector > array) { int i = array.size() - 1;原创 2018-02-21 10:33:39 · 190 阅读 · 0 评论 -
链表中倒数第k个节点
题目描述输入一个链表,输出该链表中倒数第k个结点。最容易想到的就是先遍历一遍,计算出总的节点数,然后来一次遍历返回倒数第k个节点,而另外一种思路只要遍历一遍即可定义两个指针p1和p2先让p1走k-1个节点,这样剩下n-k个节点这时候再让p1和p2一起走,等p1走到最后一个空节点,也就是走完了剩下的n-k个节点,那么p2同样也是走了n-k个节点,此时p2指向的就是倒数第k个节点原创 2018-01-20 11:41:06 · 169 阅读 · 0 评论 -
翻转子串
题目描述假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:"Hello world","world原创 2018-01-19 10:43:42 · 190 阅读 · 0 评论 -
清除数列
题目描述请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。给定一个N阶方阵int[][](C++中为vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector>),保证n小于等于300,矩阵中的元素为int范围内。测试样例:[[1,2,3],[0,1,2],[0,0,1]]返回:[[0,0,3],[0,0,0],[0,0,0]]原创 2018-01-18 13:32:36 · 457 阅读 · 0 评论 -
像素翻转
题目描述有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。测试样例:[[1,2,3],[4,5,6],[7,8,9]],3返回:[[7,4,1],[8,5,2],[9,6,3]原创 2018-01-17 14:15:16 · 206 阅读 · 0 评论 -
基本字符串压缩
题目描述利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。测试样例"aabcccccaaa原创 2018-01-16 17:20:37 · 413 阅读 · 0 评论 -
空格替换
题目描述请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。测试样例:"Mr John Smith”,13返回:"Mr%20John%20Smith原创 2018-01-15 17:46:55 · 251 阅读 · 0 评论 -
确定两串乱序同构
题目描述给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。测试样例:"This is nowcoder","is This nowcoder"返回原创 2018-01-14 16:48:33 · 222 阅读 · 0 评论 -
访问单个节点的删除
题目描述实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class R原创 2018-01-22 15:34:16 · 332 阅读 · 0 评论 -
原串翻转
题目描述请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。测试样例:"This is nowcoder"返回:"redocwon si sihT"class Reverse {public: string原创 2018-01-13 23:10:47 · 310 阅读 · 0 评论 -
剑指offer题五用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution{public: void push(int node) { stack1.push(node); } int pop() { while(!stack1.empty()) { ...原创 2018-03-14 10:15:19 · 171 阅读 · 0 评论