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

链表的奇偶重排

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;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 13:05
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务