自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Javascript中数组对象的splice、slice方法

Javascript中的数组对象的splice和slice方法

2023-09-22 20:18:01 384

原创 Map和Set

Javascript的两种内置的数据结构:Map和Set

2023-09-22 19:02:08 88

原创 48、旋转图像

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]

2023-04-18 15:24:38 92

原创 46、全排列

输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。剪枝条件:每个组合中不能有重复的数,即数组nums中的元素在一个组合中只能使用一次。输入:nums = [1,2,3]输出:[[0,1],[1,0]]输入:nums = [0,1]输入:nums = [1]

2023-04-16 11:09:44 178

原创 216、组合总数III

在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。输出: [[1,2,6], [1,3,5], [2,3,4]]输入: k = 3, n = 7。输入: k = 3, n = 9。输入: k = 4, n = 1。输出: [[1,2,4]]解释: 不存在有效的组合。每个数字 最多使用一次。没有其他符合的组合了。没有其他符合的组合了。

2023-04-16 10:33:59 138

原创 77、组合

找结果的过程可以用二叉树来表示,题目隐藏条件是向下寻找的过程中不可以使用重复的数,即如果某一层选择的节点为2,则向下选择只能选择2以后的数。给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。:能继续选择下去的条件:n-i+1 >= k-path.length。k-path.length:还需选择的元素的个数。path.length:已选择的元素的个数。你可以按 任何顺序 返回答案。输入:n = 4, k = 2。输入:n = 1, k = 1。n-i:还能选择的元素个数。

2023-04-16 09:54:18 43

原创 39、组合总数

的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。剪枝条件:元素能重复,但组合不能重复,比如[2,2,3]和[2,3,2]就是重复的组合。输入:candidates = [2,3,6,7], target = 7。输入: candidates = [2,3,5], target = 8。输出: [[2,2,2,2],[2,3,3],[3,5]]输出:[[2,2,3],[7]]

2023-04-15 10:40:35 371

原创 34. 在排序数组中查找元素的第一个和最后一个位置

首先不断二分找到一个nums[mid]==target的中间值,再分别在这个中间值的左右两侧内继续二分,直到找到最后一个等于target的值则结束。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。如果数组中不存在目标值 target,返回 [-1, -1]。分别定义一个用于找左右两侧的递归函数,函数内不断二分。输入:nums = [], target = 0。输出:[-1,-1]输出:[-1,-1]

2023-04-08 12:36:55 247

原创 33、搜索旋转排序数组

在传递给函数之前,nums 在预先未知的某个下标 k(0

2023-04-03 14:05:08 243

原创 组件间通信方式

适用于:子给父传递数据。通过父组件给子组件绑定一个自定义事件。

2023-04-01 16:55:51 591

原创 142、环形链表II

为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。1、有环,此时while循环会继续,并且将遍历到已经存储到map中的节点(即下标为pos的节点),判断map中是否有节点,有则返回该节点。输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点。快指针和慢指针相遇时,即相遇节点处,定义一个指针1,在头结点处定一个指针2。让两个指针都向后移动,每次移动一个节点,他们相遇的节点,就是环形入口的节点。解释:链表中没有环。

2023-04-01 10:19:01 76

原创 面试题 02.07. 链表相交

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。

2023-03-29 12:04:38 112

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

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。二者顺序不可改变,若先改变右节点箭头指向,让它指向左节点,此时左节点和右节点会形成环,就无法再让左节点指向右节点的下一个节点了。输入:head = [1,2,3,4]输入:head = [1]输出:[2,1,4,3]输入:head = []

2023-03-29 10:31:16 69

原创 206、反转链表

原地翻转链表,设置一个前节点和当前节点以及临时节点,首先用临时节点保存当前节点指向的下一个节点,再更改当前节点的指向,让它指向前节点,此时原地更改节点指向完成,最后让当前节点和前节点指向下一个节点。进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输入:head = [1,2]输出:[5,4,3,2,1]范围是 [0, 5000]输入:head = []

2023-03-29 09:08:34 38

原创 707、设计链表

单链表中的节点应该具备两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。你可以选择使用单链表或者双链表,设计并实现自己的链表。

2023-03-26 13:41:37 102 1

原创 203、移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。输入:head = [1,2,6,3,4,5,6], val = 6。输入:head = [7,7,7,7], val = 7。输入:head = [], val = 1。1、直接使用原来的链表来进行删除操作。2、设置一个虚拟头结点再进行删除操作。输出:[1,2,3,4,5]此题需要注意的是,如果要。

2023-03-26 09:48:19 44

原创 59、螺旋矩阵II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。输出:[[1,2,3],[8,9,4],[7,6,5]]

2023-03-25 12:03:48 36

原创 209、长度最小的子数组

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …通常写滑动窗口需要明确窗口需要维护的是什么: 本题我们需要维护窗口内的sum大于等于target。输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]输入:target = 4, nums = [1,4,4]解释:子数组 [4,3] 是该条件下的长度最小的子数组。时间复杂度:O(n^2)时间复杂度:O(n)

2023-03-25 10:41:56 69

原创 977、有序数组的平方

如果nums[i] * nums[i] >= nums[j] * nums[j] 那么array[k–] = nums[i] * nums[i];如果nums[i] * nums[i] < nums[j] * nums[j] 那么array[k–] = nums[j] * nums[j];解释:平方后,数组变为 [16,1,0,9,100]输入:nums = [-4,-1,0,3,10]输入:nums = [-7,-3,2,3,11]排序后,数组变为 [0,1,9,16,100]时间复杂度为O(n)

2023-03-22 13:36:59 75

原创 27、移除元素

解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。输入:nums = [0,1,2,2,3,0,4,2], val = 2。输入:nums = [3,2,2,3], val = 3。输出:5, nums = [0,1,4,0,3]输出:2, nums = [2,2]

2023-03-22 11:08:05 55

原创 704、二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。nums 的每个元素都将在 [-9999, 9999]之间。解释: 2 不存在 nums 中因此返回 -1。n 将在 [1, 10000]之间。

2023-03-22 10:06:55 47

原创 31、下一个排列

例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]。例如,arr = [1,2,3] 的下一个排列是 [1,3,2]。输入:nums = [1,2,3]输入:nums = [3,2,1]输出:[1,3,2]输出:[1,2,3]

2023-03-05 20:16:44 46

原创 23、合并K个升序链表

输入:lists = [[1,4,5],[1,3,4],[2,6]]请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。输出:[1,1,2,3,4,4,5,6]将它们合并到一个有序链表中得到。输入:lists = [[]]输入:lists = []

2023-03-02 09:44:52 50

原创 22、括号生成

输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。选括号时左括号的数量始终是不能大于右括号的,不然就不能成双成对。要么选左括号要么选右括号,’选择‘会展开成一棵解的空间树。能选右括号的条件:左括号的数量小于右括号。能选左括号的条件:左括号的数量不为0。当括号的长度等于2*n时,结束。

2023-03-01 20:47:28 46

原创 20、合并两个有序列表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]两个链表的节点数目范围是 [0, 50]输入:l1 = [], l2 = []l1 和 l2 均按 非递减顺序 排列。输出:[1,1,2,3,4,4]

2023-02-26 19:51:04 251

原创 20、有效的括号

当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。当我们遇到一个左括号时,我们会期望在后续的遍历中,有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个左括号放入栈顶。哈希表的键为右括号,值为相同类型的左括号。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。在遍历结束后,如果栈中没有左括号,说明我们将字符串 s 中的所有左括号闭合,返回。

2023-02-26 09:31:01 37

原创 19、删除链表的倒数第N个节点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。输入:head = [1,2], n = 1。输入:head = [1], n = 1。输出:[1,2,3,5]

2023-02-24 16:06:36 40

原创 17、电话号码的字母组合

输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入:digits = “23”输出:[“a”,“b”,“c”]输入:digits = “2”输入:digits = “”

2023-02-24 16:03:12 47

原创 15、三数之和

首先对数组进行从小到大的排序,排序后固定一个数 nums[i],再使用左右指针指向nums[i]后面部分的两端,数字分别为 nums[left] 和 nums[right],计算三个数的和 sum 判断是否满足为 sum=0,满足则添加进结果集。当 sum == 0 时,nums[left] == nums[left+1] 和 nums[right] == nums[right−1] 都会导致结果重复,应该跳过。输出:[[-1,-1,2],[-1,0,1]]输出:[[0,0,0]]

2023-02-23 15:55:02 37

原创 12、整数转罗马数字

数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。解释: M = 1000, CM = 900, XC = 90, IV = 4.I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。解释: L = 50, V = 5, III = 3.

2023-02-23 14:02:27 71

原创 11、盛水最多的容器

有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。若向内 移动长板 ,水槽的短板 min(height[left],height[right])不变或变小,因此下个水槽的面积 一定变小。若向内 移动短板 ,水槽的短板 min(height[left],height[right])可能变大,因此下个水槽的面积 可能增大。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。输入:[1,8,6,2,5,4,8,3,7]说明:你不能倾斜容器。

2023-02-23 10:00:17 157

原创 10、正则表达式匹配

解释:因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 ‘a’。因此,字符串 “aa” 可被视为 ‘a’ 重复了一次。给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。” 表示可匹配零个或多个(‘*’)任意字符(‘.’)。解释:“a” 无法匹配 “aa” 整个字符串。输入:s = “aa”, p = “a*”输入:s = “aa”, p = “a”‘*’ 匹配零个或多个前面的那一个元素。输入:s = “ab”, p = “.

2023-02-23 09:52:32 88

原创 5、最长回文子串

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。给你一个字符串 s,找到 s 中最长的回文子串。解释:“aba” 同样是符合题意的答案。输入:s = “babad”输入:s = “cbbd”

2023-01-01 18:27:43 106

原创 4、寻找两个正序数组的中位数

别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数。解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5。输入:nums1 = [1,2], nums2 = [3,4]输入:nums1 = [1,3], nums2 = [2]算法的时间复杂度应该为 O(log (m+n))。解释:合并数组 = [1,2,3] ,中位数 2。输出:2.00000。输出:2.50000。

2022-12-27 17:24:15 42

原创 3、无重复字符的最长子串

请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”s 由英文字母、数字、符号和空格组成。输入: s = “pwwkew”输入: s = “bbbbb”

2022-12-26 19:07:33 60

原创 2、两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]每个链表中的节点数在范围 [1, 100] 内。输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]题目数据保证列表表示的数字不含前导零。输出:[7,0,8]

2022-12-24 14:49:47 44

原创 1、两数之和

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

2022-12-23 16:07:59 40

原创 CSS 选择器

可以将CSS选择器分为五类:

2022-09-26 19:29:14 1600

原创 JavaScript Array 对象常用的方法

concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

2022-09-17 22:57:44 174

原创 剑指 Offer (第2版) 22. 链表中倒数第k个节点

让快指针先走 k-1 步到达链表第k个节点(从1开始计数),然后快慢指针一起走。快指针走到最后一个节点停下时慢指针也停下,慢指针就到达第倒数k个节点了。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

2022-09-17 00:16:56 209

空空如也

空空如也

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

TA关注的人

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