自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

whitsats的博客

deadline是第一生产力

  • 博客(17)
  • 收藏
  • 关注

原创 [JavaScript数据结构] 栈的实现及应用

开始栈是一种特殊的线性表,仅能够在栈顶进行操作,有着**先进后出(后进先出)**的特性。下面这张图为栈的工作特点:从数据存储的角度看,用JavaScript实现栈有两种方式,一种是以数组做基础,一种是以链表做基础,本节中,我们使用数组实现栈。链表会作为单独的数据结果进行介绍。我们先定义一个简单的Stack类function Stack(){ var items = []; // 用数组存储数据}数据会存储在 items数组中,现在,这个类没有任何的方法。栈的方法栈的方法有以下几种p

2020-06-10 15:43:48 293

原创 [算法基础] 字符串操作-划分字母区间

题目字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。提示:S的长度在[1,

2020-06-22 17:18:56 346

原创 [算法基础] 字符串操作-最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解题思路...

2020-06-22 16:18:28 379

原创 [算法基础] 字符串操作-Z字形变换

题目将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s =

2020-06-19 11:06:59 462

原创 [算法基础] 区间合并-合并区间

题目给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。解题思路合并区间问题中,我们同样也可以使用双指针进行解题。对边界进行排序,设置两个指针,一个指针savePoi

2020-06-17 15:38:30 806

原创 [算法基础] 快慢指针遍历-链表的中间结点

题目给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next

2020-06-16 14:25:26 155 1

原创 [算法基础] 快慢指针遍历-快乐数

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

2020-06-15 15:29:40 177

原创 [JavaScript数据结构] 队列的实现及应用

开始队列是一种特殊的线性表,其特殊之处在于,它只允许你在队列的头部删除元素,在队列的末尾添加新的元素。左侧是队列的头部,右侧是队列的尾部,新的元素如果想要进入队列,只能从尾部进入,如果想要出队列,只能从队列的头部出去。队列的实现有了栈这个数据结构做铺垫,队列就容易学习了数据存储同栈一样,我们的队列也用数组来存储数据,定义一个简单的类Queue。function Queue(){ var items = [];}数据将存储在items数组之中。队列的方法队列的方法如下enqu

2020-06-15 14:45:29 225

原创 [算法基础] 快慢指针遍历-环形链表

题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:输入:head = [1], pos =

2020-06-12 18:23:15 200

原创 [算法基础] 双指针遍历/滑动窗口- 长度最小的子数组

题目给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。解题思路本题同样可以使用双指针进行解答。我们可以通过双指针维护一个滑动的窗口。设置

2020-06-11 07:01:05 152

原创 [算法基础] 双指针遍历/滑动窗口-买卖股票的最佳时机

题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。示例

2020-06-10 11:47:06 297

原创 [算法基础] 双指针遍历/滑动窗口-接雨水

题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6解题思路仔细观察本图,我们可以得知,在数组的i位置,能够接到的雨水的量,取决于当前元素左侧高度的最大值和右侧高度的最大值较小的那一个。能够接到的水量,为较小的高度最大值减去它自身

2020-06-09 15:46:57 204

原创 [算法基础] 双指针遍历/滑动窗口-删除排序数组中的重复项

题目给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原

2020-06-09 07:29:34 242

原创 [算法基础] 双指针遍历/滑动窗口-最接近的三数之和

题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[i] <= 10^3-10^4 &lt

2020-06-07 17:39:59 167

原创 [算法基础] 双指针遍历/滑动窗口-三数之和

题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解题思路方法一 暴力求解由题干可知,我们需要寻找的是三个数,那就使用三重循环嵌套最为直观/** * @param {nu

2020-06-05 11:51:25 389

原创 [算法基础] 双指针遍历/滑动窗口-盛最多水的容器

题目给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49解题思路本题求的是最多水的容器,从图例可得,其实求的是“面积”。面积的计算公式为数值在数组中的间隔x两侧数值较小者。方法一 暴力求解我

2020-06-05 00:59:48 177

原创 [算法基础] 双指针遍历/滑动窗口-无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

2020-06-03 16:23:47 203

空空如也

空空如也

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

TA关注的人

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