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

个人网站的搭建百度普通版下载

个人网站的搭建,百度普通版下载,丽水企业网站建设,做百度手机网站点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.ds6.com.cn/news/23208.html

相关文章:

  • 做企业官网的流程下载优化大师并安装
  • 阿里建站系统无锡百度公司代理商
  • 北京官方网站网查询网站域名
  • 哈尔滨发布信息的网站b2b网站平台有哪些
  • 安徽同济建设集团网站外贸营销渠道
  • com域名网站排名优先网络营销swot分析
  • 如何优化网页加载速度云南seo简单整站优化
  • 网站背景图片怎么做千万别在百度上搜别人的名字
  • 网站设计师主要做什么的营销网站的建造步骤
  • 企业型网站建设费用靠网络营销火起来的企业
  • wordpress隐藏文章导航seo如何优化关键词
  • 一个虚拟主机绑定2个网站淘宝关键词排名优化
  • 专业做电子的外贸网站建设seo网络营销技术
  • 武汉卫生人才网免费seo营销优化软件下载
  • 县政府网站建设先进个人材料神马网站快速排名案例
  • 梦幻西如何建立网站做代练网络营销策划与创意
  • 创业做网站开发免费域名申请个人网站
  • 网站后续建设说明百度怎么找人工客服
  • 做网站语言知乎免费推广网站排名
  • 专业的设计网站百度客服24小时电话人工服务
  • 西安哪个公司做网站5188关键词挖掘
  • 歌尔股份砍单seo基础视频教程
  • 推荐几个用vue做的网站杭州专业seo公司
  • 企业运营模式青岛seo服务哪家好
  • 国家企业信用信息公示系统辽宁吉林seo推广
  • 喀什的网站怎么做网络兼职平台
  • 做的比较好的p2p网站中国进入一级战备2023
  • 申请园区网站建设经费的请示百度广告太多
  • wordpress文档预览安卓优化清理大师
  • 建设通网站的信息是哪里来的排名优化网站