每日一刷——合并有序链表&&求n个数的和

来源:互联网 发布:买隐形眼镜必知常识 编辑:程序博客网 时间:2024/06/05 19:28

1.【基础题】–合并两个有序链表,合并以后的链表依旧有序。

ListNode* merge(ListNode* l1,ListNode* l2){if(l1==NULL&&L2==NULL){    return NULL;}else if(l1!=NULL&&l2==NULL){    return l1;}else {    return l2;}ListNode* head=NULL;if(l1->val<=l2->val){     head=l1;     l1=l1->next;}else {      head=l2;     l2=l2->next;}ListNode* cur=head;while(l1&&l2){    if(l1->val<=l2->val){     cur->next=l1;     l1=l1->next;}else {     cur->nextl2;     l2=l2->next;}cur=cur->next;}if(l1){ cur->next=l1;}if(l2){ cur->next=l2;}return head;}

2.【附加题】–实现1+2+3…+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。(这个题有多种解法,这个题最优的解法时间复杂度是O(1))
(1),定义一个类,new一个含有n个这种类型的数据的数组,则类的构造函数将会被调用n次。
基于这种思想我们可以将要进行的代码放入构造函数中。

#include<iostream>using namespace std;class Temp{public:    Temp()    {        _n++;        _sum += _n;    }    static void init()    {        _n = 0;        _sum = 0;    }    static int res()    {        return _sum;    }private:    static int _n;    static int _sum;};//静态变量的使用// 静态数据成员的使用方法和注意事项如下: // 1、静态数据成员在定义或说明时前面加关键字static。//静态变量的定义 // 2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:  //  <数据类型><类名>::<静态数据成员名>=<值>  //静态变量的初始化 //(1) 初始化在类体外进行,而前面不加static,(这点需要注意)以免与一般静态变量或对象相混淆。//(2) 初始化时不加该成员的访问权限控制符private,public等。//(3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。 // 3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。 // 4、引用静态数据成员时,采用如下格式: //  <类名>::<静态成员名>     int Temp::_n = 0;int Temp::_sum = 0;int sumcount(int n){    Temp::init();    Temp *a = new Temp[n];    delete[]a;    a = 0;    return Temp::res();}int main(){    cout<<"sum="<<sumcount(100)<<endl;    system("pause");}
原创粉丝点击