题解 | #调整牛群顺序#

调整牛群顺序

https://www.nowcoder.com/practice/a1f432134c31416b8b2957e66961b7d4

解题思路:

        // 先获取链表的尾部,再找到链表的倒数第n个节点,并且获取它的前一个节点。

        // 1,利用前一个节点跳过该倒数第n个节点,也就是说删除该倒数第n个节点。

        // 2,把该倒数第n个节点接到链表的尾部节点后。

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    ListNode* moveNthToEnd(ListNode* head, int n) {
        // 先获取链表的尾部,再找到链表的倒数第n个节点,并且获取它的前一个节点。
        // 1,利用前一个节点跳过该倒数第n个节点,也就是说删除该倒数第n个节点。
        // 2,把该倒数第n个节点接到链表的尾部节点后。
        ListNode* tail = head;
        ListNode* move = head;
        ListNode* pre = nullptr;
        int sz = 1;  //用于记录链表的大小
        while(tail->next){//找尾部节点,并计算链表的大小
            tail = tail->next;
            sz++;
        }
        if(n != sz && n != 1){// 排除两个极端
            for(int i = 0; i < sz - n; i++){ //找该倒数第n个节点
                pre = move; //记录前一个节点
                move = move->next;
            }
            pre->next = move->next; // 先跳过该倒数第n个节点
            move->next = nullptr;//该倒数第n个节点是链表的尾部,因此他的下一个应置空
            tail->next = move;//接到原尾部,成为新的尾部
            return head;
        }
        else if(n == 1){ // 把尾部放到尾部,那不搞了
            return head;
        }
        else{// 头尾互换
            tail->next = new ListNode(head->val);// 直接在尾部接上一个与头节点的值相等的点;
            return head->next;// 内存污染就污染吧,不管了
        }
    }
};
全部评论

相关推荐

hanliu:1. 排版与格式问题字体与对齐问题:标题和内容的字体大小差异不够明显,无法迅速吸引目光。某些文字看起来有些拥挤(比如校园经历中的“班委成员”部分)。2. 内容逻辑性模块顺序问题:实习经历放在较靠后的位置,实际上这部分内容对应聘来说更重要,建议提前突出。细节表述不够突出:比如教育背景部分的专业课程仅仅列出名字,没有说明自己在这些课程中表现如何或者掌握了什么技能,缺乏量化描述。多余内容:例如“班委成员”和“宣传委员”这类校园经历,叙述过于普通,缺乏和岗位相关的实质性贡献。,建议简写。3. 措辞专业性表达不够精准:例如“协助班长与团支书更好地为同学服务”显得较为笼统,没有实际成果的体现。用词重复:如“学习了焊接”“学习了光检”等重复词语较多,缺乏丰富的动词来展示个人能力(如“负责”“优化”“改进”等)。技能展示不足:虽然列出了UG和CAD证书,但没有明确提到这些技能如何在实际工作中发挥作用。4. 技能匹配度技能深度不足:虽然列出了掌握的软件和技术,但没有描述技能水平(如“熟练掌握”“精通”),也没有具体案例支持这些技能。缺乏岗位导向性:比如针对机械设计与制造方向,实习经历提到了“E6尾灯项目”,但没有详细说明自己在其中的技术贡献,可能会显得经验描述泛泛而谈。5. 自我评价问题表达空泛:如“具有良好的沟通协调能力”“责任心强”之类的描述太常见,没有让人眼前一亮的特点。缺乏成果支持:自我评价中的能力没有用具体项目、经历或成就来验证,可信度较弱。 兄弟加油
点赞 评论 收藏
分享
02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
目前感觉简历还有很多问题,希望各位能不吝赐教以及非常感谢这位老哥——@黑皮白袜臭脚体育生&nbsp;的项目,学完一遍感觉受益颇丰
小菜鸡只想转正:校友,我的建议是冗余的最好去掉,突出重点,比如985,211双一流的提示,专业技能调整到个人项目之后的位置。专业技能感觉写的太细了?占用篇幅最好腾出一点给项目经历,如果没写手机号和邮箱,记得加上。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务