C++
就是这个七昂
这个作者很懒,什么都没留下…
展开
-
基本字符压缩
利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。测试样例"aabcccccaaa" 返回:"a2...翻译 2018-07-09 10:45:19 · 790 阅读 · 0 评论 -
《剑指offer》替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { int count =0; for(int i=0;i&...原创 2018-10-10 22:10:29 · 98 阅读 · 0 评论 -
《剑指offer》二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array){ ...原创 2018-10-10 09:42:44 · 122 阅读 · 0 评论 -
回文链表
请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false/*struct ListNode { int val; struct ListNode *next; ListNode(int x...原创 2018-10-09 22:19:15 · 3300 阅读 · 0 评论 -
链式A+B
题目描述有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。测试样例:{1,2,3},{3,2,1}返回:{4,4,4}class Plus {public: List...原创 2018-10-09 20:42:06 · 173 阅读 · 0 评论 -
链表分割
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。 思路:/*struct ListNode { int val; struct ListNode *next; ListNod...原创 2018-08-20 20:47:58 · 116 阅读 · 0 评论 -
访问链表单个节点的删除
实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class Remov...原创 2018-08-20 20:36:51 · 301 阅读 · 0 评论 -
将俩个线性表归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。
例如:LA = (3,5, 8,11) ,LB = (2,6,8,9,11,15,20)LC = (2,3,5,6,8,8,9,11,11,15,20,)LC中的数据元素或是LA中的数据元素,或是LB中的数据元素,则只要先设LC为空表,然后将LA或LB中的元素逐个插入到LC中即可。为使LC中元素按值非递减有序排列,可设俩个指针i和j分别指向LA和LB某个元素,若设i当前所指的元素为...原创 2018-07-10 11:01:55 · 3803 阅读 · 5 评论 -
将俩个线性表合在一起
俩个线性表合在一起组成新的线性表C,C = AUB,void union(List &La, List Lb){ int len_La = ListLength(La); int len_Lb = ListLength(Lb); for(int i = 0; i < Len_Lb; i++) { GetElem(Lb, i, e); //用e返回L中第i个数据元素的值 if(...原创 2018-07-10 10:35:48 · 865 阅读 · 0 评论 -
链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点。class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if (pListHead==NULL) return pListHead; if(k==0) return NULL; ...原创 2018-07-09 20:26:58 · 126 阅读 · 0 评论 -
翻转子串
假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:"Hello world","worldhello " ...翻译 2018-07-09 15:57:29 · 136 阅读 · 0 评论 -
清除行列
请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。给定一个N阶方阵int[][](C++中为vector<vector><int>>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector<vector><int>>),保证n小于等于300,矩阵中的元素为int范围内。</int>&...翻译 2018-07-09 15:38:14 · 100 阅读 · 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]]class T...翻译 2018-07-09 11:36:18 · 902 阅读 · 0 评论 -
《剑指offer》从尾到头打印链表
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/c...原创 2018-10-10 22:33:54 · 138 阅读 · 0 评论