发布日期:2022-11-28
1、斐波那契数列:
题目要求:写一个函数,输出第n项斐波那契数列。
classSolution{public:intFibonacci(intn){inta=0,b=1;//首项为0while(n--)进行n次替换{intc=a+b;a=b,b=c;}returna;}};
方法2:递归实现
classSolution{public:intFibonacci(intn){if(n
2、替换空格
题目要求:实现一个函数,把字符串中的每个空格替换成" "
classSolution{public:stringreplaceSpaces(string&str){stringres;//定义一个新字符串for(autoc:str)//auto枚举字符串strif(c=='')res+=" ";elseres+=c;returnres;}};
3、在O(1)时间删除链表结点
题目要求:
给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。
假设链表一定存在,并且该节点一定不是尾节点。
classSolution{public:voiddeleteNode(ListNode*node){node->val=node->next->val;//用下一个节点的值把我当前的值覆盖掉node->next=node->next->next;//再把下个节点删掉}};
4、合并两个排序的链表
题目要求:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。
输入:1->3->5,2->4->5
输出:1->2->3->4->5->5
classSolution{public:ListNode*merge(ListNode*l1,ListNode*l2){autodummy=newListNode(-1);autocur=dummy;//记录当前尾节点的地址while(l1&&l2)//两个指针来遍历两个链表{if(l1->valval)//每次找当前两个链表中较小值{cur->next=l1;//那个值更小就放在新链表cur后面cur=l1;l1=l1->next;}else{cur->next=l2;cur=l2;l2=l2->next;}}if(l1)cur->next=l1;//哪个不为空则接到最后一个elsecur->next=l2;returndummy->next;}};
5、左旋转字符串
题目要求:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。
请定义一个函数实现字符串左旋转操作的功能。
比如输入字符串"abcdefg"和数字22,该函数将返回左旋转22位得到的结果"cdefgab"。
输入:"abcdefg",n=2
输出:"cdefgab"
方法1:利用函数substr
classSolution{public:stringleftRotateString(stringstr,intn){while(n--){str=str.substr(1)+str[0];//每次把字符串首位接到字符串末尾,接n次}returnstr;}};
方法2:利用reverse函数
classSolution{public:stringleftRotateString(stringstr,intn){reverse(str.begin,str.end);//先逆置全部reverse(str.begin,str.begin+str.size-n);再分别逆置每个部分reverse(str.begin+str.size-n,str.begin+str.size);returnstr;}};
总结:让我们一起加油,我们会成为下一个大牛!