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

链表的奇偶重排

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-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务