继前次家里介绍的相亲对象失利今后,家里热心的亲戚又给本大龄独身猿介绍了一个妹子,不,或许应该叫姐姐,她比我大三岁。俗话说 “女大三抱金砖” ,本着 “试试看不行就当朋友” 的心态咱们就加上了微信。

刚开始聊的还算能够,毕竟大家刚知道,来来回回都是一些比较拘束客套的论题。到这儿还都算比较正常。

本以为她比我年纪大一点,并且是销售,或许性情上和待人接物上都会是比较 成熟温柔体贴 的大姐姐类型,没想到跟着知道时刻的添加,以及谈天论题的深入,慢慢暴露出了一些问题。。。

【不三不四的脑洞】

在我看来的缺点

口头禅 —— 不走心

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

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

【不三不四的脑洞】

尽管自己不会煮饭,可是要求对方会

我尽管平时会喜爱看看美食教学频道,可是也仅仅偶尔的心血来潮,没有那么高的厨艺水平(或许跟着时刻的磨炼会逐渐提高),并且我也期望是两个人能够一同在厨房张罗,而不是只有我一个人在忙活,哪怕仅仅打打下手(当然最好是能教教我、带带我)。

【不三不四的脑洞】

喜爱给别人打分

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

不知道和她从前是管理层有没有联系,我从前恶作剧试探性的问过她是不是 “妻管严” 的那种 “严妻” ,她答复 “是的”。所以和她谈天的过程中,时不时就有一种被班主任 “高高在上” 怒斥的感觉。

最近的一次,便是由于我忘记了她从前和我说过她的星座,然后我又问了一遍,成果又被 “减分” 了 。。。

【不三不四的脑洞】

有近乎夸大的洁癖

她和我说过她有必定的洁癖,我原本不以为然,由于大多数女生都是爱洁净的。可是有一次她和我提起了一件事,我觉得着实有些夸大:某天她在和搭档开会,在此期间,她的一个男性搭档随手拿了她放在桌上的手机看了几眼,成果她就心中非常的 “膈应”、千般厌恶,等到会议结束今后,她就仓促去拿酒精把手机消毒了一遍。。。

【不三不四的脑洞】

在我看来的优点

当然她也有一些优点的,比如她怜惜弱势群体,之前某地有个卖牛肉的售货员由于制止某个女顾客(据说是位女老师)把吃了一半的牛肉放回去,而被那位女顾客推搡谩骂,她就非常的怒发冲冠,并说起她从前也由于公司里的一些工作人员对保洁大叔不礼貌,而仗义执言的业绩。

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

【不三不四的脑洞】

可是很惋惜的是,咱们之间仍是没有擦除爱情的火花,或许是由于年纪差距而导致的代沟?幽默感有时不太一样,我的一些笑点她 get() 不到,她的一些笑点我也 get() 不到。然后再涉及到一些比较高层次的政经文学等论题的讨论,更是接不住对方的梗,所以发展到今日 “被拉黑” 也并不意外。

尽管我被拉黑了,可是我又又又从这次 “失利” 里悟出了一个道理 ——

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

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

/// @note 结点
struct ListNode{
    int val;        ///< 待比较的值
    ListNode *next; ///< 后一个结点
    ListNode(int x): val(x), next(NULL){}
};
  /// @note 兼并两个(有序)链表,回来兼并后链表的头和尾。
  pair<ListNode*, ListNode*> 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};
  }

为了加深回忆总结如下

  1. 比较 l1l2,一直将小值放在 l1 ,大值放在 l2
  2. l1 连接到兼并了链表尾部 tail->next
  3. l1tail 都后移一位;
  4. 以上迭代,如果有一个链表还有剩下,则需进行善后。

收尾

或许这份惋惜能够加深对链表兼并算法的印象吧

【不三不四的脑洞】

谢谢您!

我正在参加掘金技能社区创作者签约方案招募活动,点击链接报名投稿。