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

网站成品免费下载推广服务公司

网站成品免费下载,推广服务公司,网站打不开网址显示无法访问,泰安做网站的公司题目描述 给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val 0 。 对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 …

题目描述

给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。

对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0 。

返回修改后链表的头节点 head 。

示例 1:

输入:head = [0,3,1,0,4,5,2,0]
输出:[4,11]
解释:
上图表示输入的链表。修改后的链表包含:
- 标记为绿色的节点之和:3 + 1 = 4
- 标记为红色的节点之和:4 + 5 + 2 = 11

示例 2:

输入:head = [0,1,0,3,0,2,2,0]
输出:[1,3,4]
解释:
上图表示输入的链表。修改后的链表包含:
- 标记为绿色的节点之和:1 = 1
- 标记为红色的节点之和:3 = 3
- 标记为黄色的节点之和:2 + 2 = 4

提示:

  • 列表中的节点数目在范围 [3, 2 * 10^5] 内
  • 0 <= Node.val <= 1000
  •  存在连续两个 Node.val == 0 的节点
  • 链表的 开端 和 末尾 节点都满足 Node.val == 0

思路

这是一道字符串模拟题,我们需要模拟合并的过程。首先,为链表添加一个虚拟头节点,定义pre指针用来记录结果链表的最后一个节点,初始是虚拟头节点,定义cur指针来遍历链表。如果下一个节点的值不是0,就将上一个节点的值加到下一个节点上。如果下一个节点的值是0,就将本节点连接到结果链表上,因为本节点的值已经是本段链表的值之和。最后再去除末尾的含0节点即可。

时间复杂度:O(n)

空间复杂度:O(1)

代码

C++版:

/*** 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* mergeNodes(ListNode* head) {ListNode* dummmyHead=new ListNode();ListNode* pre=dummmyHead;ListNode* cur=head->next;ListNode* tmp;while(cur->next!=nullptr){// 下一个节点的值不是0,让下一个节点的值加上当前节点的值if(cur->next->val!=0){cur->next->val+=cur->val;}else{ // 下一个节点的值是0,让pre->next=cur;pre=pre->next;}// 记录最后一个含0的节点的前一个节点if(cur->next->next==nullptr){tmp=cur;}cur=cur->next;}// 还需要去除最后一个含0的节点tmp->next=nullptr;return dummmyHead->next;}
};

Python版:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def mergeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]:dummyHead=ListNode()pre=dummyHeadcur=head.nexttmp=Nonewhile cur.next!=None:if cur.next.val!=0:cur.next.val+=cur.valelse :pre.next=curpre=pre.nextif cur.next.next==None:tmp=curcur=cur.nexttmp.next=Nonereturn dummyHead.next

需要注意的地方

1.本题容易忽略最后一个节点也是含0节点,需要删除最后一个节点。

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

相关文章:

  • 鹤壁做网站优化网站类型定义
  • 网站建设步骤视频教程扩展名 网站
  • 美橙互联网站打不开网页版微信文件传输助手
  • ps做网站界面wordpress 中间截取缩略图
  • 手机怎么制作网站教程做网站排名费用
  • 织梦 更换网站图标阿里云服务器上传网站
  • 南通网站建设知识vivo系统最新版本
  • 手机产品展示网站模板建站网站那个好
  • steam做皮肤网站如何把wordpress的文章页写成模板
  • wordpress 做外贸站教育机构做网站的目的
  • 北京品牌网站建设海口建站费用
  • 一对一直播网站开发做网站用什么配资电脑
  • 淄博网站设计丨致信网络建设能播放视频的网站
  • 口碑好网站建设多少钱网站推广 优帮云
  • 有哪些做问卷调查的网站好个人网站制作的主要内容
  • 深圳网站建设艺之都望野什么意思
  • asp网站没有数据库信息流广告怎么投放
  • 网站建设界面ppt演示网站模板一般用什么软件做
  • 制作公司网站要多少钱网络推广合作方式
  • 洛阳市App网站开发公司做调查表的网站
  • 金融行业网站建设大宗商品现货交易平台
  • 网站的优化用什么软件做商城网站建设哪家好
  • 建设银行江苏省分行网站帝国cms能做手机网站吗
  • 网站技术解决方案的内容用cn作网站行么
  • 网站建设3a模型是什么意思wordpress加载视频
  • 长春餐饮网站建设大连网站如何制作
  • 抚顺做网站陕西建设网成绩查询
  • 做废旧回收哪个网站好装修设计公司属于什么行业
  • 商丘网站制作费用网站建设费会计科目
  • 邯郸的网站建设网站返回503的含义是