随笔分类 - leetcode
记录刷过的LeetCode题目
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 [TOC] 描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 示例 2: 示例 3: 解法一:暴力枚举法(Time Limit Exceeded) 思路 这种方法采用的思路是:列举出字符串中所有的子
阅读全文
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 @[toc] 描述 使用队列实现栈的下列操作: push(x) 元素 x 入栈 pop() 移除栈顶元素 top() 获取栈顶元素 empty() 返回栈是否为空 注意: 你只能使用队列的基本操作 也就是 , , , 和 这些操作是
阅读全文
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 [toc] 描述 使用栈实现队列的下列操作: push(x) 将一个元素放入队列的尾部。 pop() 从队列首部移除元素。 peek() 返回队列首部的元素。 empty() 返回队列是否为空。 示例: 说明: 你只能使用标准的栈操
阅读全文
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 [toc] 描述 给定 和 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 代表退格字符。 示例 1: 示例 2: 示例 3: 示例 4: 提示: 1. `,那么就将当前的字符压入栈中;如果当前的字
阅读全文
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 [toc] 描述 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表: 当 k =
阅读全文
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 [TOC] 描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值 ,而是需要实际的进行节点交换。 解法一:迭代 思路 这道题的思路其实很
阅读全文
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 [TOC] 描述 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 示例 2: 说明: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度 必须 优于 O(
阅读全文
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 [TOC] 描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例 : 说明 : 给定的 n 保证是有效的。 进阶 : 你能尝试使用一趟扫描实现吗? 解法:双指针 思路 求解这道问题等价于寻找倒数的第 $N+
阅读全文
摘要:[TOC] 描述 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 示例 2: 解法:双指针 思路 求解这道题等价于 找到链表倒数第 k 个节点,然后将之前的所有节点放到链表的尾部,形成一个新的链表 ,相当于 "LeetCode 第 19 题" 的进阶版。
阅读全文
摘要:[toc] 描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 。 说明 :不允许修改给定的链表。 进阶 : 你是否可以不用额外空间解决此题? 解法一:哈希表 思路 最直接的解法就是利用一个集合保存每次遍历的节点的引用。之后,从链表头开始遍历,每遍历一个节点,就判断该节点的引用
阅读全文
摘要:[TOC] 描述 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 示例 2: 示例 3: 解法 1:判断整数 $x$ 的二进制表示中是否只有一位为1 实现方式 1:除以 2 让我们先来看一下 2 的幂有什么规律, | n | 2 的幂 | 二进制表示 | | | | | | 0
阅读全文
摘要:9_回文数(Palindrome Number) [TOC] 描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 示例 2: 示例 3: 进阶: 你能不将整数转为字符串来解决这个问题吗? 解法一:转化为字符串的比较 思路 将整数转化为字符串,比
阅读全文
摘要:169_求众数(Majority Element) 这道题有 5 种方法,8 种实现,详细分析可以看 花花酱 的 "YouTube 专栏" 。 [TOC] 描述 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数 大于 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。
阅读全文
摘要:160_相交链表 [TOC] 描述 编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表 : 在节点 c1 开始相交。 注意: 如果两个链表没有交点,返回 . 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O( n ) 时间复杂度,且仅用 O
阅读全文
摘要:21_合并两个有序链表 [TOC] 描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 解法一:迭代 思路 因为两个链表都是有序链表(递增),因此可以很容易地找出两个链表中的最小元素,即比较两个链表表头的元素,时间复杂度是 $O(1)$ 的。我
阅读全文
摘要:237_删除链表中的节点 [TOC] 描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 head = [4,5,1,9],它可以表示为: 示例 1: 示例 2: 说明: 链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为
阅读全文
摘要:141_环形链表 [TOC] 描述 给定一个链表,判断链表中是否有环。 进阶: 你能否不使用额外空间解决此题? 解法一:哈希表 思路 判断一个链表是否包含环,可以转化为判断是否有一个节点之前已经出现过。非常自然的一个想法就是:遍历链表的每个节点,用一个哈希表记录每个节点的引用(或内存地址);如果能够
阅读全文
摘要:更多 LeetCode 题解笔记可以访问我的 "github" 。 [TOC] 描述 反转一个单链表。 示例 : 进阶 : 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 解法一:迭代 思路 遍历链表的每个节点,将每个节点的 指针指向它的前一个节点(即前驱)。因为这是一个单向链表,并不存在
阅读全文
摘要:【LeetCode题解】136_只出现一次的数字 [TOC] 描述 给定一个 非空 整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 示例 2: 方法一:列表操作 思路 新
阅读全文
摘要:【LeetCode题解】7_反转整数 [TOC] 描述 给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 示例 2: 示例 3: 注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 $[ 2^{31},\,2^{31} 1]$。根据这个假设,如果反转后的整数溢出,则返
阅读全文