Leetcode刷题记录
参考公众号“代码随想录”刷题攻略
weixin_51146763
这个作者很懒,什么都没留下…
展开
-
202. 快乐数 (哈希表)
题目快乐数编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。示例 1:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1示例 2:原创 2021-02-10 16:38:13 · 112 阅读 · 0 评论 -
349. 两个数组的交集(哈希表)
题目两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。哈希法不能再使用数组作为哈希表,因为数组作哈希表不能太大(如作为字母表),此题没有限定数值范围,不用数组。当我们要使用集合解决哈希问题时,优先使用u原创 2021-02-10 16:10:49 · 142 阅读 · 0 评论 -
242. 有效的字母异位词 (哈希表)
题目有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?哈希法构造一个数组当作哈希表,存储英文字母。class Solution {p原创 2021-02-10 15:38:44 · 118 阅读 · 0 评论 -
142. 环形链表 II (双指针)
题目环形链表 II给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链原创 2021-02-10 15:09:07 · 119 阅读 · 0 评论 -
206. 反转链表 (双指针法、递归)
题目反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?双指针法只要改变一下next的方向即可。无需再重新建一个链表。/** * Definition for singly-linked list. * struct ListNode { * int val; * L原创 2021-02-10 11:11:09 · 111 阅读 · 0 评论 -
链表基础内容
链表的定义//单链表struct listNode { int data; //该节点上存储的元素 listNode *next; //指向下一个节点的指针 listNode(int x) : data(x), next(NULL) {} //节点的构造函数};如果不定义构造函数,初始化就不能直接给变量赋值。自己定义构造函数初始化节点:listNode* head = new listNode(5);使用默认函数初始化节点:listNode* head = new listNode原创 2021-02-09 10:56:21 · 77 阅读 · 0 评论 -
数组:59. 螺旋矩阵 II (模拟行为)
题目螺旋矩阵 II给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]提示:1 <= n <= 20来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/spiral-matrix-ii著作权归领扣网络所有。商业转载原创 2021-02-09 10:34:38 · 80 阅读 · 0 评论 -
数组:209.长度最小的子数组(滑动窗口法/双指针法)
题目209.长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。进阶:如果你已经完成了 O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。来源:力扣(LeetCode)链接:https://leetcode原创 2021-02-09 09:19:02 · 240 阅读 · 0 评论 -
数组:27. 移除元素(双指针法)
题目移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,原创 2021-01-27 11:08:14 · 213 阅读 · 0 评论 -
数组:35. 搜索插入位置(暴力法、二分法)
题目搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/原创 2021-01-27 11:08:27 · 104 阅读 · 0 评论