⚡每日肥学⚡——算法&面试题2️⃣

导读

小伙伴们新的学期又要开始了,您是否已经做好了冲刺的准备了呢?如果您想在这个学期收获的比别人更多我建议给肥肥点个关注。我们一起来增长知识,无论你是考研还是找工作或者是要加薪。这里都是一个不错的选择。让我们红尘作伴,一起肥学!!!
在这里插入图片描述

🔮算法题

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:


输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:

输入:head = []
输出:[]
示例 3:

输入:head = [1]
输出:[1]
提示:

链表中节点的数目在范围 [0, 100]0 <= Node.val <= 100

🔮一点点思路

我想这道题的难点在这里**进阶:你能在不修改链表节点值的情况下解决这个问题吗?(也就是说,仅修改节点本身。)**也就是相邻的两个节点进行交换,具体的实现我们就可以用一个新节点来配合链表进行交换。这里在推荐的时候保证代码的整洁性还是推荐用递归的方法。递归法最适合这种有规律的操作了。

🔮源码和详解

public ListNode swapPairs(ListNode head) {
//用来进行初始的判断对应着实例2和3,同时也是递归到最后返回的值
        if (head == null || head.next == null) {
            return head;
        }
        //我下面花个图帮助大家理解,数据结构的有图最好理解了
        ListNode newHead = head.next;
        //这个可以倒着看,从最后一个看就好理解了
        head.next = swapPairs(newHead.next);
        newHead.next = head;
        return newHead;
    }


在这里插入图片描述
关于写递归我的一些经验:

我们应该关心的主要有三点:

返回值
调用单元做了什么
终止条件

🔮面试题

谈谈消息队列(MessageQueue)
消息队列(MessageQueue)是服务架构中常见的组件,可用于服务间解耦、事件广播、任务异步/延迟处理等,常用于分布式系统之间互相信息的传递。接下来对消息队列的实现如何满足几种消费场景进行简单阐述。

一 . 消息队列相关概念

1、生产者(Producer): 负责产生消息;

2、消费者(Consumer): 负责消费消息;

3、消息(Message): 在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象;

4、消息队列(Message Queue):
一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ
中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

5、消息代理(Message Broker): 负责存储/转发消息,转发分为推和拉两种。

拉是指Consumer主动从Message Broker获取消息; 推是指Message
Broker主动将Consumer感兴趣的消息推送给Consumer。


原文连接:https://blog.csdn.net/jiahuiandxuehui/article/details/119763830

相关推荐

翟佳:高可用、强一致、低延迟——BookKeeper的存储实现

管正雄:基于预训练模型、智能运维的QA生成算法落地

814. 二叉树剪枝 : 简单递归运用题

【综合笔试题】难度 3.5\u002F5,多解法热门二叉树笔试题

【java刷算法】牛客—剑指offer3栈、数组、递归、二分法的初步练习

leetcode 2342. Max Sum of a Pair With Equal Sum of Digits (python)

22张图带你深入剖析前缀、中缀、后缀表达式以及表达式求值

随机数索引(一题双解)【Leetcode每日(4.25)一题】C++

1260. 二维网格迁移 : 简单构造模拟题

坚持用C++刷牛客题(剑指offer专题)

日拱一卒,麻省理工教你信息安全和密码学

C语言——三种方式实现学生信息管理

快速排序及优化

萌新也能看懂的KMP算法

简答一波 HashMap 常见八股面试题 —— 算法系列(2)

素数算法(Prime Num Algorithm)

必须收藏!双目立体匹配算法:Patch Match Stereo实用详解教程

有哪些高质量的自学网站?

731. 我的日程安排表 II : 线段树(动态开点)的两种方式

LeetCode周赛302,这也太卷了,20分钟ak也只有300名……