随笔分类 -  LeetCode笔记

摘要:用栈实现队列 力扣题目链接(opens new window) 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: MyQueue queue 阅读全文
posted @ 2023-02-14 21:05 dayceng 阅读(134) 评论(0) 推荐(0)
摘要:重复的子字符串 力扣题目链接(opens new window) 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 阅读全文
posted @ 2023-02-13 16:09 dayceng 阅读(191) 评论(0) 推荐(0)
摘要:KMP算法(用于实现 strStr()) strStr()函数是用来在一个字符串中搜索是否存在另一个字符串的函数,其匹配字符串方式为KMP算法 KMP算法基础理论 假设有如下两个字符串 文本串 aabaabaaf 模式串 aabaaf 我们希望在文本串中匹配出模式串 Intro 暴力法 使用两层fo 阅读全文
posted @ 2023-02-12 16:42 dayceng 阅读(236) 评论(0) 推荐(1)
摘要:左旋转字符串 力扣题目链接(opens new window) 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = "a 阅读全文
posted @ 2023-02-11 15:43 dayceng 阅读(24) 评论(0) 推荐(0)
摘要:翻转字符串中的单词 力扣题目链接(opens new window) 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hel 阅读全文
posted @ 2023-02-11 13:48 dayceng 阅读(108) 评论(0) 推荐(0)
摘要:### 替换空格 [力扣题目链接(opens new window)](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出 阅读全文
posted @ 2023-02-09 21:10 dayceng 阅读(52) 评论(0) 推荐(0)
摘要:反转字符串 力扣题目链接(opens new window) 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 阅读全文
posted @ 2023-02-09 21:07 dayceng 阅读(61) 评论(0) 推荐(0)
摘要:之所以放在一起是因为,"四数之和"的解题方法基本与"三数之和"一致 由此我们可以推出n数之和的解法 本质上,我们只是使用双指针的方法降低此类问题的时间复杂度 当然用哈希法也可以解,那就是另外的故事了 三数之和 力扣题目链接(opens new window) 给你一个包含 n 个整数的数组 nums 阅读全文
posted @ 2023-02-08 21:56 dayceng 阅读(95) 评论(0) 推荐(0)
摘要:四数相加II 力扣题目链接(opens new window) 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 阅读全文
posted @ 2023-02-08 20:56 dayceng 阅读(25) 评论(0) 推荐(0)
摘要:### 两数之和 [力扣题目链接(opens new window)](https://leetcode.cn/problems/two-sum/) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对 阅读全文
posted @ 2023-02-07 22:31 dayceng 阅读(142) 评论(0) 推荐(0)
摘要:快乐数 力扣题目链接(opens new window) 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 阅读全文
posted @ 2023-01-30 21:38 dayceng 阅读(48) 评论(0) 推荐(0)
摘要:【C++链表】 使用c++重新写一遍LeetCode707设计链表 目的是熟悉c++中链表的操作 知识点 C++链表节点的实现 在c++中,一般通过结构体来定义链表的节点,也需要写构造函数(使用初始化列表) 如: struct ListNode{ int val; ListNode* next; / 阅读全文
posted @ 2023-01-28 22:13 dayceng 阅读(318) 评论(0) 推荐(1)
摘要:两个数组的交集 力扣题目链接(opens new window) 题意:给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 思路 哈希表最擅长解决的一类问题是: 给一个元素,判断该元素在某个集合中是否出现过 本题也是非常符合哈希表 阅读全文
posted @ 2023-01-24 21:11 dayceng 阅读(86) 评论(0) 推荐(0)
摘要:有效的字母异位词 力扣题目链接(opens new window) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "c 阅读全文
posted @ 2023-01-23 20:48 dayceng 阅读(50) 评论(0) 推荐(0)
摘要:链表相交 同:160.链表相交 力扣题目链接(opens new window) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注 阅读全文
posted @ 2023-01-20 17:05 dayceng 阅读(33) 评论(0) 推荐(0)
摘要:环形链表II 力扣题目链接(opens new window) 题意: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明: 阅读全文
posted @ 2023-01-20 11:34 dayceng 阅读(100) 评论(0) 推荐(0)
摘要:删除链表倒数第N个节点 力扣题目链接(opens new window) 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head 阅读全文
posted @ 2023-01-18 11:10 dayceng 阅读(67) 评论(0) 推荐(0)
摘要:两两交换链表中的节点 力扣题目链接(opens new window) 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 思路 这里还是要应用虚拟头节点,不然交换链表头节点的操作会与交换其他节点时不同 交换的过程其实不难理解, 阅读全文
posted @ 2023-01-17 21:31 dayceng 阅读(400) 评论(0) 推荐(0)
摘要:翻转链表 力扣题目链接(opens new window) 题意:反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路分析 双指针法是本体的最基本的解法,由此还可以改写为递归解法 双指针法 我们需要定义两个指针,pre和cur 阅读全文
posted @ 2023-01-16 21:17 dayceng 阅读(106) 评论(0) 推荐(0)
摘要:设计链表 题目 力扣题目链接 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-i 阅读全文
posted @ 2023-01-15 20:06 dayceng 阅读(95) 评论(0) 推荐(0)