自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

泛泛之素

无他、唯手熟尔

  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 react 进阶必学 hook (四):自定义hook

系列文章传送门:react 进阶必学 hook (一):useState 来一碗大碗宽面react 进阶必学 hook (二):useEffect 专治不吃宽面react 进阶必学 hook (三):useContext 面馆分店开张了什么是自定义hook官网原话如下:自定义 Hook 是一个函数,其名称以 “use” 开头,函数内部可以调用其他的 Hook,自定义 Hook 是一种自然遵循 Hook 设计的约定,而并不是 React 的特性自定义hook有一下特性或是约定:自定义h

2020-05-31 19:32:05 10209

原创 Leetcode:NO101 对称二叉树

题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 进阶:你可以运用递归和迭代两种方法解决这个问题吗?链接:https://leetcode-cn.com/problems/symmetric-tre

2020-05-31 11:51:08 304

原创 react 进阶必学 hook (三):useContext 面馆分店开张了

react 中组件上下文状态的传递,以及hook useContext的使用

2020-05-30 18:24:31 6210 1

原创 Leetcode:NO.84 柱状图中最大的矩形 单调栈

题目给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram解题记录分

2020-05-30 11:02:12 323

原创 react 进阶必学 hook (二):useEffect 专治不吃宽面

介绍reac中hook功能中的useEffect功能,结合面馆的例子形象的解释了useEffect的作用,以及如何实现,如何控制,注意点等

2020-05-29 14:09:42 6679 1

原创 Leetcode:NO.198 打家劫舍 动态规划

题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例 2:

2020-05-29 09:58:53 259

原创 react 进阶必学 hook (一):useState 来一碗大碗宽面

react 进阶必学 hook (一):useState 来一碗大碗宽面React hooks useState

2020-05-28 15:09:56 6564

原创 Leetcode:NO.394 字符串解码 递归

题目给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = "3[a]2[bc]", 返回 "aaabcbc".s = "3[a2[c]]

2020-05-28 10:28:13 340

原创 Leetcode:NO.974 和可被 K 整除的子数组 前缀和

题目给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000-10000 <= A[i] <= 10

2020-05-27 08:38:13 190

原创 Leetcode: NO.287 寻找重复数 快慢指针

题目给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。链接:https://leetcode-c

2020-05-26 09:39:50 454

原创 Leetcode: NO.146 LRU缓存机制 双向链表

题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥已经存在,则变更其数据值;如果密钥不存在,则插入该组「密钥/数据值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。进阶:你是否可以在 O(1

2020-05-25 10:11:47 181

原创 Leetcode:NO.4 寻找两个正序数组的中位数 二分法求第 k 小数

题目给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5链接:https://leetcode-cn.com/probl

2020-05-24 15:13:30 402

原创 Leetcode:NO.76 最小覆盖子串 窗口移动

题目给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。链接:https://leetcode-cn.com/problems/minimum-window-substring解题记录通过两个指针构造一个窗口先左指针已到最近匹配字符,作为

2020-05-23 17:37:56 205

原创 Leetcode:NO.105 从前序与中序遍历序列构造二叉树

题目根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题记录 * 前序遍历 preorder = [3,9,20,1,2,15,7] * 中序遍历 inorder = [1,9,2,3,15,20,7] * 返回如下的二叉树:

2020-05-22 14:01:22 245

原创 Leetcode:NO.5 最长回文子串 中心扩散

题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"链接解题记录回文特性是左右两边都一样通过中心向两边进行比对因为回文个数可以是奇数也可以是偶数,所以要注意中心的点的选取/** * @author ffzs * @describe 5. 最长回文子串 * 给定一个字符串 s,找到 s 中最长

2020-05-21 10:07:52 218

原创 Leetcode:NO.1371 每个元音包含偶数次的最长子字符串 前缀和与状态压缩

题目题目链接:https://leetcode-cn.com/problems/find-the-longest-substring-containing-vowels-in-even-counts给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 'a','e','i','o','u' ,在子字符串中都恰好出现了偶数次。示例 1:输入:s = "eleetminicoworoep"输出:13解释:最长子字符串是 "leetminicowor" ,它包含 e,i,

2020-05-20 11:32:40 218

原创 Leetcode:NO.680 验证回文字符串 双指针&子问题

题目链接:https://leetcode-cn.com/problems/valid-palindrome-ii给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。解题记录通过首尾两个指针记录字符位置比较字符是否相同如果第一次不同的话,可以跳过一个字符,标记跳过已经

2020-05-19 08:59:07 178

原创 Leetcode:NO.152 乘积最大子数组 动态规划和Tricks

题目题目链接:https://leetcode-cn.com/problems/maximum-product-subarray给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解题记录通过动态规划求解求

2020-05-18 11:10:16 249

原创 Leetcode:NO.210课程表2 拓扑排序与入度

题目题目链接:https://leetcode-cn.com/problems/course-schedule-ii现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例 1:输入: 2, [[1,0]]

2020-05-17 16:32:15 344

原创 Leetcode:NO.25 K 个一组翻转链表

题目题目链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回:

2020-05-16 13:08:00 230

原创 Leetcode:NO.560 和为k的子数组 前缀和

题目链接:https://leetcode-cn.com/problems/subarray-sum-equals-k给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。解题记录通过两个循

2020-05-15 11:11:29 177

原创 Leetcode:NO.136 只出现一次的数字

题目链接:https://leetcode-cn.com/problems/single-number给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题记录之前做过更难的 Leetcode: 面试题56 - I. 数组中数字出现的次数相同的数值可以通过异或抵

2020-05-14 11:29:45 1062

原创 Leetcode:NO.102 二叉树的层序遍历

题目链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题记录使用深度优先搜索优先遍历

2020-05-13 10:20:44 299

原创 Leetcode: 155 最小栈

题目链接:https://leetcode-cn.com/problems/min-stack设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],

2020-05-12 09:58:07 200

原创 Leetcode: 50 Pow(x, n)

题目题目链接:https://leetcode-cn.com/problems/powx-n实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有符

2020-05-11 14:12:41 191

原创 设计模式:简单的观察者模式实现(java&kotlin)

观察者模式观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象。这样一来,当被观察者状态发生改变时,需要通知相应的观察者,使这些观察者对象能够自动更新。观察这模式是应用比较多的一种设计模式,尤其在响应式编程中。观察者模式又称发布-订阅模式(Publish/Subscribe),这种称呼就比较好理解了,就好像我们在bilibili上订阅了一个up主,一旦他发布了视频,就会有消息通知订阅者,up主就是发布者(观察者publisher),用publisher户就是订阅者(观察者o

2020-05-10 12:55:53 475

原创 Leetcode: 236 二叉树的最近公共祖先

题目链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例

2020-05-10 10:36:15 211

原创 设计模式:简单的抽象工厂模式实现(java&kotlin)

抽象工厂抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。其实就是产品族和产品类型,或多维度的组合结合工厂模式的例子,工厂模式我们觉得车的例子,车其实就是产品等级维度:可以是轿车,跑车或是SUV,那么产品族是什么,这里可以用品牌举例:宝马,奥

2020-05-09 12:59:29 423

原创 Leetcode: NO69 x 的平方根

题目题目链接:https://leetcode-cn.com/problems/sqrtx实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解题记录使用api解题大部分语言都有sqrt函数,直接使用sqrt函数求解在

2020-05-09 10:28:30 835

原创 设计模式:简单的工厂模式实现(java&kotlin)

工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。模式作用产品和消费者分隔开,实现解耦,调用接口不需要知道实现逻辑调用对象通过同一个接口,只需知道需要调用对象名称即可添加种类简单,直接添加一个类型类即可java示例这里我们设计一个生产汽车的工厂,有两个种类:传统汽车和新能源汽车,接

2020-05-08 18:55:08 459

原创 Leetcode: NO.221 最大正方形

题目题目链接:https://leetcode-cn.com/problems/maximal-square在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4解题记录遍历求解,如果是1的话,判断其右,下,右下是否都为1,如果都为1的话说明...

2020-05-08 12:00:31 193

原创 Leetcode: NO.572 另一个树的子树

题目题目链接:https://leetcode-cn.com/problems/subtree-of-another-tree给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ ...

2020-05-07 10:50:30 199

原创 Leetcode: NO.983 最低票价 动态规划

题目题目链接:https://leetcode-cn.com/problems/minimum-cost-for-tickets在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的...

2020-05-06 15:08:49 297

原创 Leetcode: NO.98 验证二叉搜索树

题目链接:https://leetcode-cn.com/problems/validate-binary-search-tree给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3...

2020-05-05 21:12:47 216

原创 Leetcode: NO.45 跳跃游戏 II

题目题目链接:https://leetcode-cn.com/problems/jump-game-ii给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为...

2020-05-04 14:03:12 156

原创 Leetcode: NO.53 最大子序和

题目题目链接:https://leetcode-cn.com/problems/maximum-subarray给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(...

2020-05-03 10:27:22 187

原创 Leetcode: NO.3 无重复字符的最长子串

题目题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbb...

2020-05-02 12:30:53 197

原创 Leetcode: NO.21 合并两个有序链表

题目题目链接:https://leetcode-cn.com/problems/merge-two-sorted-lists将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题记录之前做过更高级题目K个...

2020-05-01 15:41:55 201

工作明细 job_to_map

dash作图主体分为两大部分: 一部分是数据部分data,二部分是呈现部分layout。 由于是在网页上呈现,所以layout部分的编写,是基于html语言的的一些标签。 看一下代码:

2018-01-02

空空如也

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

TA关注的人

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