
算法相关
大翰仔仔
这个作者很懒,什么都没留下…
展开
-
LeetCode48.旋转图像 JavaScript
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]...原创 2019-07-12 15:49:55 · 183 阅读 · 0 评论 -
LeetCode36.有效的数独 JavaScript
判断一个9x9的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字 1-9在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[ ["5","3",".",".","7",".",&q原创 2019-02-18 11:07:26 · 170 阅读 · 0 评论 -
LeetCode35.搜索插入位置 JavaScript
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0...原创 2019-02-18 09:18:03 · 140 阅读 · 0 评论 -
LeetCode34.在排序数组中查找元素的第一个和最后一个位置 JavaScript
给定一个按照升序排列的整数数组nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], ta...原创 2019-02-17 23:05:16 · 250 阅读 · 0 评论 -
LeetCode31.下一个排列 JavaScript
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1答案参考:/** * @param {number[...原创 2019-02-17 22:59:58 · 143 阅读 · 0 评论 -
LeetCode29.两数相除 JavaScript
给定两个整数,被除数 dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均为 32 位有符...原创 2019-02-17 22:55:26 · 300 阅读 · 0 评论 -
LeetCode28.实现strStr() JavaScript
实现strStr() 函数。给定一个 haystack 字符串和一个 needle字符串,在haystack字符串中找出 needle字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba”输...原创 2019-02-17 22:44:40 · 117 阅读 · 0 评论 -
LeetCode27.移除元素 JavaScript
给定一个数组 nums和一个值val,你需要原地移除所有数值等于 val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2...原创 2019-02-17 22:36:59 · 142 阅读 · 0 评论 -
LeetCode26.删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1) 额外空间的条件下完成。示例 1:给定数组nums = [1,1,2],函数应该返回新的长度2, 并且原数组 nums的前两个元素被修改为1,2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定nums = [0...原创 2019-02-17 22:25:33 · 121 阅读 · 0 评论 -
LeetCode38.报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211被读作 "one 1" (“一个一”) , 即 11。11 被读作 "two 1s" (“两个一”), 即 21。21 被读作 "one 2", "one 1" (“一个二” , “一个一”) , 即1211。给定一个正整数 n(1 ≤ n ≤ 30),输出...原创 2019-02-18 11:18:56 · 125 阅读 · 0 评论 -
LeetCode39.组合总和 JavaScript
给定一个无重复元素的数组 candidates和一个目标数 target ,找出 candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2...原创 2019-02-18 11:26:13 · 293 阅读 · 0 评论 -
LeetCode49. 字母异位词分组 JavaScript
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。答案参考:/** * ...原创 2019-07-12 20:39:23 · 350 阅读 · 0 评论 -
LeetCode44.通配符匹配 JavaScript
给定一个字符串(s) 和一个字符模式(p),实现一个支持 '?'和'*'的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从a-z的小写字母。p 可能为空,且只包含从 a-z的小写字母,以及字符?和*。示例 1:输入:s = "aa"p = "a"输出: false解释:...原创 2019-06-15 11:00:35 · 238 阅读 · 0 评论 -
LeetCode43.字符串相乘 JavaScript
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只...原创 2019-06-14 18:28:20 · 213 阅读 · 0 评论 -
LeetCode42.接雨水 JavaScript
给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下,可以接 6个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6答案参考:/** * @param {numb...原创 2019-03-07 17:21:17 · 412 阅读 · 0 评论 -
前端笔试中两道与节点有关的算法题
1.分别用广度优先遍历和深度优先遍历展开下面节点示例var tree = { name: 'root', children: [{ name: 'child1', children: [{ name: 'child1_1', children: [] }, { name: 'ch...原创 2019-03-13 22:09:44 · 172 阅读 · 0 评论 -
排序算法 JavaScript
一、冒泡排序算法介绍:比较相邻的两个元素,如果前一个比后一个大,则交换位置。第一轮把最大的元素放到了最后面。由于每次排序最后一个都是最大的,所以之后按照步骤1排序最后一个元素不用比较。function bubble_sort(arr){ var swap; for(var i=0;i<arr.length-1;i++){ for(var j=0;j<a...原创 2019-02-18 23:56:47 · 150 阅读 · 0 评论 -
LeetCode41.缺失的第一个正数 JavaScript
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1答案参考:/** * @param {number[]} nums * @return {number} */var firstMissingPositiv...原创 2019-02-18 11:41:37 · 194 阅读 · 0 评论 -
LeetCode40.组合总和|| JavaScript
给定一个数组 candidates和一个目标数target ,找出 candidates 中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7...原创 2019-02-18 11:37:00 · 170 阅读 · 0 评论 -
LeetCode22.括号生成 JavaScript
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]答案参考:/** * @param {numbe原创 2019-02-17 22:17:44 · 260 阅读 · 0 评论 -
LeetCode21.合并两个有序链表 JavaScript
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1-&amp;gt;2-&amp;gt;4, 1-&amp;gt;3-&amp;gt;4输出:1-&amp;gt;1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;4答案参考:/** * Definit原创 2019-02-17 22:03:31 · 124 阅读 · 0 评论 -
LeetCode20.有效的括号 JavaScript
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输...原创 2019-02-17 21:56:30 · 261 阅读 · 0 评论 -
LeetCode1.两数之和JavaScript
LeetCode1.两数之和JavaScript给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。实例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]答案参考/** * @param {numb...原创 2019-01-15 10:42:10 · 506 阅读 · 0 评论 -
LeetCode17.电话号码的字母组合 JavaScript
LeetCode17.电话号码的字母组合 JavaScript给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可...原创 2019-01-20 10:41:34 · 275 阅读 · 0 评论 -
LeetCode16.最接近的三数之和 JavaScript
LeetCode16.最接近的三数之和 JavaScript给定一个包括 n个整数的数组 nums 和 一个目标值target。找出nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 ...原创 2019-01-20 10:26:35 · 194 阅读 · 0 评论 -
LeetCode15.三数之和 JavaScript
LeetCode15.三数之和 JavaScript给定一个包含n个整数的数组 nums,判断 nums中是否存在三个元素 a,b,c,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2...原创 2019-01-20 10:16:28 · 137 阅读 · 0 评论 -
LeetCode14.最长公共前缀 JavaScript
LeetCode14.最长公共前缀 JavaScript编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z。答...原创 2019-01-20 10:08:27 · 194 阅读 · 0 评论 -
LeetCode13.罗马数字转整数 JavaScript
LeetCode13.罗马数字转整数 JavaScript罗马数字包含以下七种字符: ·I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000...原创 2019-01-20 10:02:12 · 408 阅读 · 0 评论 -
LeetCode12.整数转罗马数字 JavaScript
LeetCode12.整数转罗马数字 JavaScript罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000...原创 2019-01-20 09:54:25 · 212 阅读 · 0 评论 -
LeetCode11.盛最多水的容器 JavaScript
LeetCode11.盛最多水的容器 JavaScript给定n 个非负整数a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3...原创 2019-01-20 09:44:06 · 118 阅读 · 0 评论 -
LeetCode2.两数相加 JavaScript
LeetCode2.两数相加 JavaScript给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = ...原创 2019-01-15 13:18:17 · 319 阅读 · 0 评论 -
LeetCode3.无重复字符的最长子串JavaScript
LeetCode3.无重复字符的最长子串JavaScript给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwke...原创 2019-01-15 13:30:45 · 207 阅读 · 0 评论 -
LeetCode18.四数之和 JavaScript
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断nums中是否存在四个元素 a,b,c 和d ,使得 a + b + c + d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1,...原创 2019-02-17 21:47:38 · 158 阅读 · 0 评论 -
JS JavaScript实现杨辉三角
JS JavaScript实现杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1........观察这样的一组数,找出规律,用控制台输出这样规律的数规律:这是杨辉三角,每一行头尾的数都是1,其余的数是上一行对应的数字相加,考虑使用递归算法。答案参考:function com...转载 2019-01-16 16:06:00 · 1891 阅读 · 0 评论 -
LeetCode9.回文数 JavaScript
LeetCode9.回文数 JavaScript判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向...原创 2019-01-16 15:54:20 · 151 阅读 · 0 评论 -
LeetCode8.字符串转换整数(atoi) JavaScript
LeetCode8.字符串转换整数(atoi) JavaScript请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。...原创 2019-01-16 15:47:13 · 145 阅读 · 0 评论 -
LeetCode7.整数反转 JavaScript
LeetCode7.整数反转 JavaScript给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如...原创 2019-01-16 15:34:02 · 281 阅读 · 0 评论 -
LeetCode6.Z字形变换 JavaScript
LeetCode6.Z字形变换 JavaScript将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN...原创 2019-01-16 15:27:00 · 194 阅读 · 0 评论 -
LeetCode5.最长回文子串 JavaScript
LeetCode5.最长回文子串 JavaScript给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”/** * @param {string} s * @return {string} */...原创 2019-01-16 15:13:51 · 527 阅读 · 0 评论 -
LeetCode4.寻找两个有序数组的中位数 JavaScript
LeetCode4.寻找两个有序数组的中位数 JavaScript给定两个大小为m和n的有序数组nums1和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nu...原创 2019-01-15 13:39:44 · 236 阅读 · 0 评论