题解 | #链表的奇偶重排#

链表的奇偶重排

http://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3

奇数位,不是节点数值的奇偶性,第一遍弄错了

最简单的方式就是使用两个队列,一个放奇数位的一个放偶数位的,但是按照题目的要求,不是按照奇偶数值来进行分类的话,那么就没必要使用队列了,因为位置都是固定的

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* oddEvenList(ListNode* head) {
        // write code here
        queue<ListNode*> odd, even;
        ListNode* cur = head;
        int idx = 0;
        while(cur){
            if((idx & 1) == 0){
                even.push(cur);
            }else odd.push(cur);
            cur = cur->next;
            idx++;
        }
        if(odd.empty() || even.empty()) return head;

        ListNode*odd_cur = new ListNode(0), *even_cur = new ListNode(0);
        ListNode* odd_head = odd.front();
        
        while(!odd.empty()){
            ListNode* tmp = odd.front();
            odd_cur->next = tmp;
            odd_cur = odd_cur->next;
            odd.pop();
        }
        ListNode* enev_head = even.front();
        while(!even.empty()){
            ListNode* tmp = even.front();
            even_cur->next = tmp;
            even_cur = even_cur->next;
            even.pop();
        }
        odd_cur->next = nullptr;
        even_cur->next = odd_head;
        return enev_head;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:48
点赞 评论 收藏
分享
11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务