自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 极客时间-数据结构与算法之美(八)

极客时间-数据结构与算法之美(八):算法实战

2022-12-30 17:06:16 368 1

原创 极客时间-数据结构与算法之美(七)

极客时间-数据结构与算法之美(七):拓扑排序、最短路径、位图、概率统计、向量空间、B+树、搜索、索引、并行算法

2022-12-30 16:50:47 760 1

原创 极客时间-数据结构与算法之美(六)

极客时间-数据结构与算法之美(六):贪心、分治、回溯、动态规划

2022-12-30 16:27:40 333

原创 极客时间-数据结构与算法之美(五)

极客时间-数据结构与算法之美(五):图、深度和广度优先搜索、字符串匹配、Trie树、AC自动机

2022-12-30 16:13:56 287

原创 极客时间-数据结构与算法之美(四)

极客时间-数据结构与算法之美(四):二叉树、红黑树、递归树、堆

2022-12-30 15:50:36 175

原创 极客时间-数据结构与算法之美(三)

极客时间-数据结构与算法之美(三):二分、跳表、散列表、哈希

2022-12-29 23:56:56 459

原创 极客时间-数据结构与算法之美(二)

极客时间-数据结构与算法之美(二):递归,及各种排序

2022-12-29 23:45:46 188

原创 极客时间-数据结构与算法之美(一)

极客时间—数据结构与算法之美:数组、链表、栈、队列

2022-12-28 23:07:17 538

原创 剑指offer对应在leetcode主站的原题

记录了剑指offer Ⅱ所对应在leetcode主站的原题

2022-12-28 22:51:49 427

转载 # leetcode 151. 颠倒字符串中的单词

leetcode 151. 颠倒字符串中的单词题目描述:给你一个字符串 s ,颠倒字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。**注意:**输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。示例 1:输入:s = "the sky is blue"输出:"blue is sky t

2022-05-30 20:01:01 61

原创 leetcode 剑指 Offer 05. 替换空格

leetcode 剑指 Offer 05. 替换空格题目描述:请实现一个函数,把字符串 s 中的每个空格替换成**“%20”**。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."解题分析:方法:原地修改根据题意,因为要将字符串中空格替换为 “%20” ,总字符数增加,所以首先将字符串扩充为替换后的大小,也就是说字符串长度变为:原字符串长度 + 2 * 空格的个数。然后利用双指针从后向前遍历字符串,i 指向原字符串末尾, j 指向新字符串尾末

2022-05-25 17:05:19 70

原创 leetcode 541. 反转字符串 II

leetcode 541. 反转字符串 II题目描述:给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例 1:输入:s = "abcdefg", k = 2输出:"bacdfeg"示例 2:输入:s = "abcd", k = 2输出:"bacd"解题分析:方法:模拟根据

2022-05-25 11:50:17 102

转载 leetcode 18.四数之和

leetcode 18.四数之和题目描述:给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d < na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。示

2022-05-23 16:48:07 53

原创 leetcode 383. 赎金信

leetcode 383. 赎金信题目描述:给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。示例 1:输入:ransomNote = "a", magazine = "b"输出:false示例 2:输入:ransomNote = "aa", magazine = "ab"输出:f

2022-05-23 10:50:06 84

原创 leetcode 454. 四数相加 II

leetcode 454. 四数相加 II题目描述:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nums4[l] == 0示例 1:输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输出:2解释

2022-05-23 10:13:34 80

原创 leetcode 1. 两数之和

leetcode 1. 两数之和题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nu

2022-05-21 22:00:41 60

原创 leetcode 202. 快乐数

leetcode 202. 快乐数题目描述:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。示例 1:输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 100

2022-05-19 22:09:38 167

原创 leetcode 349. 两个数组的交集

leetcode 349. 两个数组的交集题目描述:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]解释:[4,9] 也是可通过的解题分析:方法:哈希表首先将第一个数组存到哈希表里,再去枚举第二个数组

2022-05-19 21:10:53 164

转载 leetcode 143. 重排链表

leetcode 143. 重排链表题目描述:给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[1,4,2,3]示例 2:输入:head = [1,2,3,4,5]输出:[1,5,2,4,3]解题

2022-05-18 17:24:16 146

原创 leetcode 142. 环形链表 II

leetcode 142. 环形链表 II题目描述:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置**(索引从 0 开始)**。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例 1:输入:head

2022-05-17 15:14:11 53

转载 leetcode 160. 相交链表

leetcode 160. 相交链表题目描述:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:I

2022-05-17 10:40:31 37

原创 leetcode 19. 删除链表的倒数第 N 个结点

leetcode 19. 删除链表的倒数第 N 个结点题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]解题分析:方法:双指针题目要求一次遍历,可以使用双指针法。首先设置虚拟节点 dummy 指向 head,设定双指针 p 和 q ,

2022-05-16 10:41:57 145

原创 leetcode 24. 两两交换链表中的节点

leetcode 24. 两两交换链表中的节点题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]解题分析:方法一:迭代法使用虚拟头节点 dummy,令 dummy->next = head。cur表示当前节点,每

2022-05-13 11:47:38 103

原创 leetcode 206. 反转链表

leetcode 206. 反转链表题目描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]解题分析:方法一:双指针按照题意,只需要改变链表的next指针的指向,直接将链表反转即可。在迭代时,将当前节点的 next 指针指向前节点,即需要一个额外的指针来保存前节点。而在更

2022-05-12 10:27:01 96

原创 leetcode 707. 设计链表

leetcode 707. 设计链表题目描述:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值

2022-05-11 15:11:50 50

原创 leetcode 203. 移除链表元素

leetcode 203. 移除链表元素题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]解题分析:方法一:迭代法1.删除头节点是另

2022-05-10 15:40:19 51

原创 leetcode 59. 螺旋矩阵 II

leetcode 59. 螺旋矩阵 II题目描述:给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 n*n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]解题分析:模拟法方法一:按层数进行遍历,确定遍历每一层每一边时是左闭右开,定义当前左右上下边界 l, r, t, b,初始值为 num = 1,终止值为 n * n;当 num

2022-05-09 15:48:15 233

原创 leetcode 209. 长度最小的子数组

leetcode 209. 长度最小的子数组题目描述:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4,

2022-05-07 21:39:46 86

原创 leetcode 977. 有序数组的平方

leetcode 977. 有序数组的平方题目描述:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]解题分析:方法一:暴力解法首先就是

2022-05-03 20:46:32 53

原创 leetcode 27. 移除元素

leetcode 27. 移除元素题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式

2022-05-03 17:35:57 57

原创 leetcode 658. 找到 K 个最接近的元素

leetcode 658. 找到 K 个最接近的元素题目描述:给定一个排序好的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。整数 a 比整数 b 更接近 x 需要满足:|a - x| < |b - x| 或者|a - x| == |b - x| 且 a < b示例 1:输入:arr = [1,2,3,4,5], k = 4, x = 3输出:[1,2,3,4]示例 2:输入:arr = [1,2,

2022-04-15 14:25:39 771

原创 leetcode 611. 有效三角形的个数

leetcode 611. 有效三角形的个数题目描述:给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。示例 1:输入: nums = [2,2,3,4]输出: 3解释:有效的组合是: 2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3示例 2:输入: nums = [4,2,3,4]输出: 4解题分析:在做这道题之前,我们首先应该明确怎么判断一个三角形:两边之和大于第三边;假设三角形三条边分别为a,b,c,那就需要满足a

2022-04-14 13:08:26 1110

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除