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

深圳开发微信公众号seo网站诊断报告

深圳开发微信公众号,seo网站诊断报告,论坛类的网站怎么做,怎么做网站服务器吗86.分隔链表 因为对链表中的一个节点进行更换位置的操作需要知道该节点的上一个节点 所以建立一个虚拟头节点 ListNode* pnew ListNode(-201,head);根据题意,我们需要找到第一个大于x或等于x的节点large 并且将第一个大于或等于x的节点large后的所有小于x的节点都…

86.分隔链表

因为对链表中的一个节点进行更换位置的操作需要知道该节点的上一个节点
所以建立一个虚拟头节点

ListNode* p=new ListNode(-201,head);

根据题意,我们需要找到第一个大于x或等于x的节点large
并且将第一个大于或等于x的节点large后的所有小于x的节点都挪到large前
但是在代码里为了方便挪动节点位置,large为第一个大于x的节点的前一个节点
首先我们要找到第一个大于或等于x的节点

ListNode* p=new ListNode(-201,head);
ListNode* large=p;
ListNode* cur=p;
int flag=0;
while(cur->next)
{if(cur->next->val>=x&&flag==0){large=cur;flag=1;}cur=cur->next;
}

然后再从large后第一个节点开始找,找那些小于x的节点,并挪到large前
这一步要分三个情况

  1. 当前节点cur大于等于x,cur指向下一个节点
  2. 当前节点cur小于x,且当前节点不是链表最后一个节点,正常挪
  3. 当前节点cur小于x,且当前节点是链表最后一个节点,这个时候指针变换时有一个会指向nullptr,要特别写出来
cur=large->next;
while(cur&&cur->next)
{if(cur->next->val<x&&cur->next->next){ListNode* temp1=large->next;ListNode* temp2=cur->next->next;large->next=cur->next;cur->next->next=temp1;cur->next=temp2;large=large->next;}else if(cur->next->val<x&&cur->next->next==nullptr){ListNode* temp1=large->next;large->next=cur->next;cur->next->next=temp1;cur->next=nullptr;large=large->next;}elsecur=cur->next;
}
return p->next;

最后增加一些边界条件

if(head==nullptr||head->next==nullptr)return head;
if(flag==0)//如果找不到大于x的节点
{return p->next;
}

整合起来

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* partition(ListNode* head, int x) {ListNode* p=new ListNode(-201,head);ListNode* large=p;ListNode* cur=p;int flag=0;if(head==nullptr||head->next==nullptr)return head;while(cur->next){if(cur->next->val>=x&&flag==0){large=cur;flag=1;}cur=cur->next;}if(flag==0)//如果找不到大于x的节点{return p->next;}cur=large->next;while(cur&&cur->next){if(cur->next->val<x&&cur->next->next){ListNode* temp1=large->next;ListNode* temp2=cur->next->next;large->next=cur->next;cur->next->next=temp1;cur->next=temp2;large=large->next;}else if(cur->next->val<x&&cur->next->next==nullptr){ListNode* temp1=large->next;large->next=cur->next;cur->next->next=temp1;cur->next=nullptr;large=large->next;}elsecur=cur->next;}return p->next;}
};

不过
其实第二步,从large后开始找小于x的数,完全可以合到第一步的循环里做
这部分需要再优化一下

http://www.khdw.cn/news/30358.html

相关文章:

  • 建设银行网站的支付流程百度收录入口在哪里
  • 如何建学校网站软文营销的写作技巧有哪些
  • 网络建站一般多少钱十大搜索引擎网站
  • 网站制作佛山百度网站推广排名优化
  • 网站内容建设培训通知今日热点新闻排行榜
  • 做网站宽度和长度布局夫唯seo怎么样
  • 北京市住房和城乡建设网站外贸seo优化公司
  • 做直播的在相亲网站交友seo的作用有哪些
  • 网站空间权限semseo
  • 深圳网站建设工作文案代写在哪里接单子
  • 外贸中间体做哪个网站好小广告网页
  • 相亲网站透露自己做理财的女生网页设计个人主页
  • 全国美容网站建设拼多多怎么查商品排名
  • 网站开发进程报告bilibili官网网页入口
  • 做视频网站设备需求机器人编程培训机构排名
  • 公司网站页面加密seo基础知识包括什么
  • linux wordpress是什么seo搜索规则
  • 手机网站 图标三只松鼠营销策划书
  • 网站做专题页面产品线上营销有哪些方式
  • 企业展示建设网站北京百度关键词优化
  • 现在哪个行业做网站需求多点微博营销策略
  • 成都培训学校网站建设搜索引擎推广简称
  • 山西网站的公司宁波正规seo推广
  • 网站建设 全包 模板谷歌seo快速排名优化方法
  • 济宁网站建设 中企动力临沂灰色词优化培训
  • 河北定制网站建设产业百度退款客服电话
  • 网站宣传页面职业培训学校加盟
  • 怎么更新网站备案资料总裁班课程培训
  • 泰州网站快速排名优化谷歌网站优化
  • 开普网站建设公司seo优化关键词排名