【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考

网友投稿 742 2022-08-30

【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考

【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考

刚开始聊的还算可以,毕竟大家刚认识,来来回回都是一些比较拘谨客套的话题。到这里还都算比较正常。

本以为她比我年纪大一点,而且是销售,可能性格上和待人接物上都会是比较 成熟温柔体贴 的大姐姐类型,没想到随着认识时间的增加,以及聊天话题的深入,慢慢显露出了一些问题。。。

在我看来的缺点

口头禅 —— 不走心

在认识的初期,我从来没主动和她提过要照片或者视频之类的要求(因为我知道这点经常被女生吐槽诟病),但是她却频繁向我索取,我说可以啊,那公平起见,我们就双方互换 —— 我发一张生活照,你也发一张生活照。谁知她却说我连这点小小要求都无法做到,实在是 “不走心” 。。。。

此后还有让发语音听听声音、询问体重之类的要求,甚至还问起我小时候的一些比较 隐私 成长经历,我有些实在不想作答,最后也都是以 “不走心” 而被打上标签。

虽然自己不会做饭,但是要求对方会

我虽然平时会喜欢看看美食教学频道,但是也只是偶尔的心血来潮,没有那么高的厨艺水平(可能随着时间的磨炼会逐渐提升),而且我也希望是两个人能够一起在厨房张罗,而不是只有我一个人在忙活,哪怕只是打打下手(当然最好是能教教我、带带我)。

喜欢给别人打分

此外,她还喜欢给别人打分。。。稍有不顺她的意思,她的另外一句口头禅就是 “减分” 。

不知道和她以前是管理层有没有关系,我曾经开玩笑试探性的问过她是不是 “妻管严” 的那种 “严妻” ,她回答 “是的”。所以和她聊天的过程中,时不时就有一种被班主任 “居高临下” 训斥的感觉。

最近的一次,就是因为我忘记了她曾经和我说过她的星座,然后我又问了一遍,结果又被 “减分” 了 。。。

有近乎夸张的洁癖

她和我说过她有一定的洁癖,我本来不以为然,因为大多数女生都是爱干净的。但是有一次她和我提起了一件事,我觉得着实有些夸张:某天她在和同事开会,在此期间,她的一个男性同事随手拿了她放在桌上的手机看了几眼,结果她就心中十分的 “膈应”、万般恶心,等到会议结束以后,她就匆匆去拿酒精把手机消毒了一遍。。。

在我看来的优点

当然她也有一些优点的,比如她同情弱势群体,之前某地有个卖牛肉的售货员因为制止某个女顾客(据说是位女老师)把吃了一半的牛肉放回去,而被那位女顾客推搡谩骂,她就十分的义愤填膺,并说起她曾经也因为公司里的一些工作人员对保洁大叔不礼貌,而仗义执言的事迹。

此外,作为职场上经验丰富的 “老手”,见过各种领导和老板,她还热心指导过我一些职场关于上下级关系处理方面的知识与窍门。

但是很遗憾的是,我们之间还是没有擦除爱情的火花,可能是因为年龄差距而导致的代沟?幽默感有时不太一样,我的一些笑点她 ​​get()​​​ 不到,她的一些笑点我也 ​​get()​​ 不到。然后再涉及到一些比较高层次的政经文学等话题的探讨,更是接不住对方的梗,所以发展到今天 “被拉黑” 也并不意外。

虽然我被拉黑了,但是我又又又从这次 “失败” 里悟出了一个道理 ——

两个人其实就像两个独立的链表,合不合适、能否结合在一起,是需要将各个 “结点” 逐一进行比较然后 “排序” 的。 但是也有不同点:两个链表的合并总有一个结果,但是人与人的结合,可能在某个 “结点” 的磨合比较的过程中就 “提前宣告退出” ,随即分道扬镳了 。。。

带着这份遗憾和感悟,我写下了这份代码和注释

/// @note 结点struct ListNode{ int val; ///< 待比较的值 ListNode *next; ///< 后一个结点 ListNode(int x): val(x), next(NULL){}};

/// @note 合并两个(有序)链表,返回合并后链表的头和尾。 pair merge(ListNode* l1, ListNode* l2) { ListNode dummy(0); ListNode* tail = &dummy; ///< 作用:指向合并链表的尾部 while (l1 && l2) { /// @note 比较 l1 和 l2,注意:将小的放在 l1,大的放在 l2 /// 所以之后始终只要操作 l1 和 tail 即可 if (l1->val > l2->val) swap(l1, l2); tail->next = l1; ///< 保存 l1 为 tail 的下一位(即将 l1 连到合并链表上) l1 = l1->next; ///< l1 后移一位(继续和 l2 比较) tail = tail->next; ///< tail 也后移一位(即原 l1) } tail->next = l1 ? l1 : l2; ///< 善后 l1, l2 看看是否有链表有剩余,有则链上 while (tail->next) tail = tail->next; ///< 并让 tail 指向剩下链表的尾部 return {dummy.next, tail}; }

为了加深记忆总结如下

比较​​l1​​​ 和​​l2​​​,始终将小值放在​​l1​​​ ,大值放在​​l2​​ ;将​​l1​​​ 连接到合并了链表尾部​​tail->next​​;​​l1​​​ 和​​tail​​ 都后移一位;以上迭代,如果有一个链表还有剩余,则需进行善后。

收尾

或许这份遗憾能够加深对链表合并算法的印象吧

谢谢您!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SQL面试题今天你登录了吗?(扩展表连接)
下一篇:关于go get的小知识(关于工作的励志短句)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~