【LeetCode 2130】链表最大孪生和

题目

在一个大小为 nn 为 偶数 的链表中,对于 0 <= i <= (n / 2) - 1i ,第 i 个节点(下标从 0 开始)的孪生节点为第 (n-1-i) 个节点 。

  • 比方说,n = 4 那么节点 0 是节点 3 的孪生节点,节点 1 是节点 2 的孪生节点。这是长度为 n = 4 的链表中所有的孪生节点。

孪生和定义为一个节点和它孪生节点两者值之和。

给你一个长度为偶数的链表的头节点 head ,请你返回链表的最大孪生和

题解

注意到,孪生节点就是已知链表的首尾一一对应,可以遍历一次给定链表,并运用双端队列deque存储;

依次取出首尾元素求和,弹出后重复该步骤,找出最大和即可。

代码

class Solution {
public:
    int pairSum(ListNode* head) {
        deque<int> tmp;
        while(head!=nullptr){
            tmp.push_back(head->val);
            head=head->next;
        }
        int res=0;
        while(!tmp.empty()){
            int f=tmp.front();
            tmp.pop_front();
            int b=tmp.back();
            tmp.pop_back();
            res=max(res,f+b);
        }
        return res;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值