![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
进击的码农菌
这个作者很懒,什么都没留下…
展开
-
用两个栈来实现队列(JS解法)—— 高频面试算法题(字节跳动真题)
题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 题目分析: 我们都知道,栈是实行FILO(first in last out)而队列是实行FIFO(first in first out)机制的。那么要想用两个栈来实现队列的效果,其实非常简单。 我们将数据依次先push进第一个栈中,然后再pop进第二个栈。再依次pop出第二个栈的数据,那这样第二个栈的出栈顺序就等于第一个栈的先进先出了。即实现了队列的操作。 值得注意的是,第一个栈往第二个栈pop出数据时,要原创 2020-11-14 14:42:44 · 188 阅读 · 0 评论 -
删除链表的倒数第n个节点(JS解法) —— 高频面试算法题(美团真题)
题目描述: 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针。 例如: 给出的链表为:1->2->3->4->5, n= 2. 删除了链表的倒数第n个节点之后,链表变为1->2->3->5. 备注: 题目保证n一定是有效的 请给出请给出时间复杂度为 O(n)的算法 实例 输入: {1,2},2 输出: {2} 解题思路 要想删除链表的倒数第N个节点,需要遍历链表得出长度。 然后将第length-n的下一个节点指向下下个节点即可。 我的解法 functio原创 2020-11-13 16:46:13 · 150 阅读 · 0 评论 -
反转链表(JS解法)—— 高频面试算法题(字节跳动真题)
题目描述: 输入一个链表,反转链表后,输出新链表的表头。 解题思路: 设置一个current值等于原链表的表头,preview值记录前一个节点。 循环遍历原链表,用temp值更新current值,知道cur.next = null。 返回preview值,因为pre是原链表的最后一个节点,就是反转后的链表的表头,输出即可。 说明:因为题目只要求返回表头,所以实际上并没有真正意义上进行真正的反转链表的操作。假如是给定原链表的表头,返回整个反转完的链表,则需要遍历输出每一个值进入一个空数组,再返回空数组的.原创 2020-11-12 14:55:56 · 295 阅读 · 0 评论 -
判断给定的链表中是否有环(JS解法) —— 高频面试算法题(字节跳动真题)
题目描述: 判断给定的链表中是否有环 扩展: 你能给出空间复杂度O(1)的解法么? 解题思路: 判定链表中是否有环,关键在于这个链表是不是可以一直循环走下去。 那么可以设置两个指针,快指针和慢指针,一个走两步,一个走一步。如果链表中有环,那么它们迟早是会相遇的,而且复杂度恒定为O(1)。 如果链表为null,单节点,双节点,都不会有环,直接返回false就行了。 我的解法: /* * function ListNode(x){ * this.val = x; * this.next = n原创 2020-11-12 14:27:03 · 957 阅读 · 1 评论 -
二分查找(JS解法)——高频面试算法题(百度真题)
题目描述: 请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。 示例: 输入 5,4,[1,2,4,4,5] 返回值 3 说明 输出位置从1开始计算 我个人解法 /** * 二分查找 * @param n int整型 数组长度 * @param v int整型 查找值 * @param a int整型一维数组 有序数组 * @return int整型 */ function upper_bound_( n , v ,原创 2020-11-11 23:53:21 · 316 阅读 · 0 评论