当前位置: 首页 > news >正文

做网站英文怎么写玩具 东莞网站建设 技术支持

做网站英文怎么写,玩具 东莞网站建设 技术支持,简单炫酷的编程代码,装饰公司网站源码下载Yan-英杰的博客 悟已往之不谏 知来者之可追 目录 一、反转链表 二、合并两个有序链表 三、链表分割 四、链表的回文结构 一、反转链表 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 输入:head [1,2] 输出:[2,1] 示例 3&#xf…

Yan-英杰的博客 

 悟已往之不谏 知来者之可追


目录

一、反转链表

二、合并两个有序链表

三、链表分割

四、链表的回文结构


一、反转链表

 

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

方法一:

        代码解析:   

struct ListNode* reverseList(struct ListNode* head){if(head == NULL){return NULL;}struct ListNode* n1,*n2,*n3;n1 = NULL;n2 = head;n3 = n2->next;while(n2){//翻转链表n2->next = n1;//迭代n1 = n2;n2 = n3;if(n3)   n3 = n3->next;}return n1;
}

        画图解析:

                

        注:该题使用到了三指针

 方法二:

        代码解析:

struct ListNode* reverseList(struct ListNode* head){struct ListNode* cur = head,*newhead = NULL;while(cur){struct ListNode* next = cur->next;//头插cur->next = newhead;newhead = cur;cur = next;}return newhead;
}

        画图解析:

 此方法采用头插方式

二、合并两个有序链表

 

        将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

        示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

 示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

    两个链表的节点数目范围是 [0, 50]
    -100 <= Node.val <= 100
    l1 和 l2 均按 非递减顺序 排列

代码解析:

        

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){if(list1 == NULL){return list2;}if(list2 == NULL){return list1;}struct ListNode* cur1 = list1,*cur2 = list2;struct ListNode* head = NULL,*tail = NULL;while(cur1 && cur2){if(cur1->val < cur2->val){if(head == NULL){head = tail = cur1;}else{tail->next = cur1;tail = tail->next;}cur1 = cur1->next;}else{if(head == NULL){head = tail = cur2;}else{tail->next = cur2;tail = tail->next;}cur2 = cur2->next;}}if(cur1){tail->next = cur1;}if(cur2){tail->next = cur2;}return head;
}

画图解析:
        

三、链表分割

 

        描述

        现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。

        思路:

      小于尾插到一个链表,大于等于尾插到另一个链表,再将两个链表链接起来

        代码解析:

                

class Partition {
public:ListNode* partition(ListNode* pHead, int x) {// write code herestruct ListNode* gGurad,*gTail,*lGuard,*lTail;gGurad = gTail = (struct ListNode*)malloc(sizeof(struct ListNode));lGuard = lTail = (struct ListNode*)malloc(sizeof(struct ListNode));gTail->next = lTail->next = NULL;struct ListNode* cur = pHead;while(cur){if(cur->val < x){lTail->next = cur;lTail = lTail->next;}else{gTail->next = cur;gTail = gTail->next;}cur= cur->next;}lTail->next = gGurad->next;gTail->next =NULL;pHead = lGuard->next;free(gGurad);free(lGuard);return pHead;}
};

        画图解析:

                        

 

         此题我们需要用到哨兵位的头节点

四、链表的回文结构

 

        描述

        对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。

        给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。

        测试样例:

1->2->2->1
返回:true

        代码解析:

                                

//查找中间节点
struct ListNode* Mid(struct ListNode* Head) {struct ListNode* slow = Head;struct ListNode* fast = Head;while (fast && fast->next) {slow = slow->next;fast = fast->next->next;}return slow;
}//链表逆置
struct ListNode* reverse(struct ListNode* Head)
{struct ListNode* cur = Head;struct ListNode* phead = NULL;while(cur){struct ListNode* next = cur->next;cur->next = phead;phead = cur;cur = next;}return phead;
}class PalindromeList {public:bool chkPalindrome(ListNode* A) {struct ListNode* MidList = Mid(A);struct ListNode* ReList = reverse(MidList);struct ListNode* pphead = A;struct ListNode* ppheadR = ReList;while(pphead && ppheadR){if(pphead->val != ppheadR->val){return false;}else{pphead = pphead->next;ppheadR = ppheadR->next;}}return true;}
};

        画图解析:

                

 

http://www.yayakq.cn/news/278597/

相关文章:

  • 做网站怎么在主机上放图片成都哪里有做网站建设的
  • 计算机网站开发毕业设计论文开题报告网站建设开发程序代码
  • 江阴便宜做网站台州市建设局招聘网站
  • 做网站优化的工资有多高互易中国如何做网站
  • 怎么做网站底部备案号北京网站开发公司大全
  • 抖音代刷网站推广快速网站建设合同详细
  • 公司网站建设方案设计WordPress主题Perimg
  • 上海住房城乡建设厅网站首页外链服务
  • 如何查看网站建站程序html网站的规划与建设6
  • 沈阳网站建设21anshan成都网站seo费用
  • 遵义建立公司网站的步骤软件开发 报价单
  • 修水县城乡建设局网站网站子目录
  • 国外平面设计师常看的网站揭阳做网站公司
  • 广东省住房与城乡建设部网站临西网站建设价格
  • 东台网站开发大连有几家做网站的公司
  • 建设网站要买服务器wordpress 中文标题
  • 淘宝做的网站优化重庆企业网站建设价格
  • wordpress瘦身seo关键词的优化技巧
  • 小企业网站制作数据集网站
  • 电子图书馆网站建设网站空间提供商
  • wordpress网站页脚浙江省建筑信息港官网
  • 网站商城建站网站开发形式选择
  • 如何让网站给百度收录自己做的网站套dedecms教程
  • asp网站浏览器兼容广州项目网络推广性价比
  • 2017手机网站建设方案wordpress一键
  • 蚌埠的网站建设网建通信建设有限公司
  • 合肥网站建设首选 晨飞网络网站推广策划方案大数据
  • 怎么做一个简易网站WordPress访问mysql慢
  • 济南企业网站制作费用视频模板免费制作
  • 建设银行办信用卡网站5118素材网站