ACM3:剑指offer
屠变恶龙之人
这个作者很懒,什么都没留下…
展开
-
确定字符互异
请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。测试样例:"aeiou"返回:True"BarackObama"返回:Fals原创 2016-12-19 13:02:13 · 247 阅读 · 0 评论 -
逆向打印链表
输入一个链表,从尾到头打印链表每个节点的值。vector print(ListNode* head) //递归{ vector v; if(head != NULL) { if(head->next != NULL) { v =print(head->next);原创 2017-01-10 15:13:23 · 285 阅读 · 0 评论 -
链表单个节点的删除
实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回truebool remove(ListNode* pnode){ if(pnode==NULL || (pnode!=NULL && pnode->next==NULL)) return false;原创 2017-01-01 10:30:42 · 288 阅读 · 0 评论 -
链表中倒数第k个节点
输入一个链表,输出链表中倒数第k个节点ListNode* Find(ListNode* Head, unigned int k){ if(Head==NULL || k==0) return NULL; ListNode *p=Head, *q=Head; while(p!=NULL && k) {原创 2017-01-01 10:22:09 · 193 阅读 · 0 评论 -
两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。stack stack1;stack stack2; void push(int node){ stack1.push(node);} int pop(){ if(stack2.empty()) { while原创 2017-01-10 16:32:42 · 185 阅读 · 0 评论 -
空格替换成“%20 ”
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。void replaceSpace(chat *str, int length){ if(str==NULL || length return; for(int原创 2017-01-10 14:50:01 · 432 阅读 · 0 评论 -
输入二维数组和整数,判断是否含有
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。从右上开始寻找:bool Find(vector >array, int target){ int row = array.size(); int col = array[0].si原创 2017-01-08 14:07:47 · 424 阅读 · 0 评论 -
遇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]]原创 2016-12-27 13:53:20 · 465 阅读 · 0 评论 -
判断翻转子串(类似循环右移)
假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:"Hello world","world原创 2016-12-27 13:19:41 · 430 阅读 · 0 评论 -
确定两串乱序同构
给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。测试样例:"This is nowcoder","is This nowcoder"返原创 2016-12-27 13:00:33 · 235 阅读 · 0 评论 -
顺时针打印数组
/* 思想,用左上和右下的坐标定位出一次要旋转打印的数据,一次旋转打印结束后,往对角分别前进和后退一个单位。 提交代码时,主要的问题出在没有控制好后两个for循环,需要加入条件判断,防止出现单行或者单列的情况。 */classSolution {public: vectorint> printMatrix(vectorint> > matrix) {原创 2017-05-02 20:13:34 · 285 阅读 · 0 评论