面试准备-算法
文章平均质量分 82
饼干饼干圆又圆
这个作者很懒,什么都没留下…
展开
-
计算机网络概述
对于不同的网络应用需要有不同的应用层协议,在互联网中的应用层协议很多,如域名系统DNS,支持万维网的HTTP协议,支持电子邮件的SMTP协议,等等。运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。网络层的另一个任务是选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫作IP数据报,简称数据报。所谓通用的,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。数据链路层通常称为链路层。原创 2024-04-22 09:34:28 · 1708 阅读 · 0 评论 -
Leetcode算法题
当一个版本为正确版本,则该版本之前所有的版本均为正确版本,当一个版本为错误版本,则该版本之后的所有版本均为错误版本。最朴素的想法是存储数组nums的值,每次调用sumRange时,通过循环的方式计算和,一共计算j-i+1个元素的和。产品的最新版本没有通过质量检测,由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。每一轮投票过程中,从数组中删除两个不同的元素,直到投票过程无法继续,此时数组为空或者数组中剩下的元素都相等。扫描过程中,维护当前整理好的字符串,记为ret。原创 2024-04-13 08:50:07 · 712 阅读 · 0 评论 -
Leetcode算法题
显而易见的是,如果石头堆中只有一块、两块、或是三块石头,那么在你的回合,你就可以把全部石子拿走,从而在游戏中取胜;因此,要想获胜,在你的回合中,必须避免石头堆中的石子数为 4 的情况。对二叉树的根节点root进行深度优先搜索,在搜索过程中,根据规则对遍历的节点的值进行恢复,并且将遍历的节点的值加入哈希表valSet中。如果当前遍历到的节点root的左右子树都已经翻转,那么只需要交换两棵子树的位置,即可完成以root为根节点的整棵子树的翻转。从根节点开始,递归地对树进行遍历,并从叶子节点开始翻转。原创 2024-03-13 13:48:58 · 877 阅读 · 1 评论 -
Leetcode算法题
为了让数组之和最小,我们按照1,2,3的顺序考虑,但添加了x之后,就不能添加taget-x,因此最大可以添加到target/2,如果个数不够,就继续从target,target+1,…我们可以遍历secret和 guess,统计满足 secret[i] == guess[i] 的下标个数,即为公牛的个数。需要构造一个大小为n的正整数数组,该数组由不同的数字组成,并且没有任意两个数字的和等于target,在满足这样的前提下,要保证数组的和最小。给定一个大小为 n 的数组 nums ,返回其中的多数元素。原创 2024-03-10 09:38:01 · 902 阅读 · 0 评论 -
Leetcode算法题
如果当前节点在哈希集合中,则后面的节点都在哈希集合中,即从当前节点开始的所有节点都在两个链表的相交部分,因此在链表 headB\textit{headB}headB 中遍历到的第一个在哈希集合中的节点就是两个链表相交的节点,返回该节点。每次到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。初始时,慢指针在head,快指针在head.next,若在移动过程中,快指针反过来追上慢指针,说明链表是环形。定义两个指针,慢指针每次移动一步,快指针每次移动两步。原创 2024-03-07 21:12:09 · 809 阅读 · 0 评论 -
Leetcode算法题
给定一个二叉树的根节点root,返回它的中序遍历。中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。相同的树给两棵二叉树的根节点p和q,编写一个函数验证这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,原创 2024-03-06 14:57:27 · 1204 阅读 · 0 评论 -
Leetcode算法题
本题是一道常见的面试题,面试官一般会要求面试者在不使用 x\sqrt{x}x函数的情况下,得到 xxx 的平方根的整数部分。一般的思路会有以下几种:通过其它的数学函数代替平方根函数得到精确结果,取整数部分作为答案;通过数学方法得到近似结果,直接作为答案。函数的情况下,得到 xxx 的平方根的整数部分。一般的思路会有以下几种:通过其它的数学函数代替平方根函数得到精确结果,取整数部分作为答案;通过数学方法得到近似结果,直接作为答案。原创 2024-03-05 15:23:07 · 883 阅读 · 0 评论 -
Leetcode算法题
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。将一个栈当作输入栈,用于压入push传入的数据;另一个栈当作输出栈,用于pop和peek操作。void push(int x) 将元素 x 推到队列的末尾。int pop() 从队列的开头移除并返回元素。int peek() 返回队列开头的元素。原创 2024-03-04 17:53:54 · 406 阅读 · 0 评论 -
Leetcode算法题
可以使用两个队列实现栈的操作,其中queue1用于存储栈内的元素,queue2作为入栈操作的辅助队列。入栈操作时,首先将元素入队到queue2,然后将queue1的全部元素依次出队并入到queue2,此时queue2的前端的元素即为新入栈的元素,再将queue1和queue2互换,则queue1的元素即为站内的元素,queue1的前端和后端对应栈顶和栈底。由于每次入栈都确保queue1的前端元素为栈顶。原创 2024-03-03 11:20:37 · 464 阅读 · 0 评论 -
Leetcode算法题
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k。判题标准:原创 2024-02-29 15:21:18 · 1176 阅读 · 0 评论