LeetCode
lalalalala~
前端菜鸟一个
展开
-
[LeetCode] 1.两数之和 —— JavaScript
两数之和给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]var twoSum = function(nums, target) { va...原创 2018-11-01 15:44:36 · 291 阅读 · 0 评论 -
[LeetCode]112. 路径总和 —— javascript
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。 var hasPathSum = function(root, sum) { if (!root) return false; var cur = sum-root.val; if (!root.left&&am...原创 2018-11-07 10:41:59 · 458 阅读 · 0 评论 -
[LeetCode]111. 二叉树的最小深度 —— javascript
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。 var minDepth = function(root) { if (!root) return 0; if (!root.left&&!root.right) return 1; if (!root.left) re...原创 2018-11-07 10:16:52 · 1010 阅读 · 0 评论 -
[LeetCode]69. x 的平方根 —— javascript
x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 var mySqrt = function(x) { if(x==0||x==1) return x; for (var i=1; i<=x; i++){ if(i*i<=...原创 2018-11-02 19:00:28 · 333 阅读 · 0 评论 -
[LeetCode] 67. 二进制求和—— javascript
二进制求和给定两个二进制字符串,返回他们的和(用二进制表示)。 var addBinary = function(a, b) { var res = []; var num = 0; var addOne = 0;//是否进位 //字符串对其 while(a.length < b.length){ a = 0 + a...原创 2018-11-02 18:59:57 · 903 阅读 · 0 评论 -
[LeetCode] 66. 加一 —— javascript
加一给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 var plusOne = function(digits) { var len = digits.length; for (var i=len-1; i>=0; i--){ if(digits[i]<9){...原创 2018-11-02 18:59:43 · 235 阅读 · 0 评论 -
LeetCode 58. 最后一个单词的长度 —— javascript
最后一个单词的长度给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。 var lengthOfLastWord = function(s) { s = s.trim(); var arr = s.split(' '); return arr[arr.length-1].length; }; ...原创 2018-11-02 18:59:27 · 270 阅读 · 0 评论 -
[LeetCode] 53. 最大子序和—— javascript
53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 var maxSubArray = function(nums) { var max = nums[0]; var sum = 0; for (let num of nums){ if (sum < 0){ ...原创 2018-11-02 18:59:07 · 188 阅读 · 0 评论 -
[LeetCode]38. 报数 —— javascript
38. 报数报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。 var countAndSay = function(n) { var resultStr = '1'; for (var i=1; i<n; i++){ var repeatCount = 1; var str = ''; for ...原创 2018-11-02 18:58:48 · 115 阅读 · 0 评论 -
[LeetCode]118. 杨辉三角 —— javascript
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] var generate = function(numRows) { var res = []; for (var i=0; i&...原创 2018-11-07 10:56:17 · 177 阅读 · 0 评论 -
[LeetCode]119. 杨辉三角 II —— javascript
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 var getRow = function(rowIndex) { var res = [1]; if (rowIndex==0) return [1]; if (rowIndex==1) { return [1,1]; } var arr = getRow(...原创 2018-11-07 11:22:35 · 309 阅读 · 0 评论 -
[LeetCode]160. 相交链表 —— javascrip
编写一个程序,找到两个单链表相交的起始节点。例如,下面的两个链表:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。注意:如果两个链表没有交点,返回 null...原创 2018-11-12 14:57:54 · 114 阅读 · 0 评论 -
[LeetCode]198. 打家劫舍 —— javascrip
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。思路:偷取第 i 家时,有两种选择:偷取第 i 家,此时金额为:res[i] = res[i-2]+nums...原创 2018-11-12 14:28:12 · 114 阅读 · 0 评论 -
[LeetCode] 38. 报数 —— JavaScript
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一个正整数 n(1 ≤ n ≤ 30)...原创 2018-11-05 17:25:14 · 231 阅读 · 0 评论 -
[LeetCode]155. 最小栈 —— javascrip
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。 var MinStack = function() { this.stack = [] }; /** * @param {number}...原创 2018-11-07 15:10:24 · 162 阅读 · 0 评论 -
[LeetCode]136. 只出现一次的数字 —— javascript
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 var singleNumber = function(nums) { nums.sort(function(a, b){ return a-b; }); var len = nums.length; for (var i=0; i&l...原创 2018-11-07 14:22:04 · 461 阅读 · 0 评论 -
[LeetCode]125. 验证回文串 —— javascript
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。 var isPalindrome = function(s) { var str1 = s.toUpperCase().replace(/\W/g,''); var str2 = str1.split('').reverse().join('')...原创 2018-11-07 14:13:53 · 402 阅读 · 0 评论 -
[LeetCode]122. 买卖股票的最佳时机 II —— javascript
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 var maxProfit = function(prices) { var max = 0; var len = prices.length; ...原创 2018-11-07 11:50:36 · 475 阅读 · 0 评论 -
[LeetCode]121. 买卖股票的最佳时机 —— javascript
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。 var maxProfit = function(prices) { var max = 0; var profit = 0; var len = prices.lengt...原创 2018-11-07 11:31:19 · 210 阅读 · 0 评论 -
[LeetCode] 27. 移除元素 —— javascript
27. 移除元素 1给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 var removeElement = function(nums, val) { var i = ...原创 2018-11-02 18:58:33 · 153 阅读 · 0 评论 -
[LeetCode] 110. 平衡二叉树—— javascript
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 var isBalanced = function(root) { if (!root) return true; if (Math.abs(depth(root.left)-depth(root.right))>1) ret...原创 2018-11-06 18:36:10 · 888 阅读 · 0 评论 -
[LeetCode] 26. 删除排序数组中的重复项 —— javascript
26. 删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 var removeDuplicates = function(nums) { var i = 0; var len = nums.length; for (var j=1; j<len; j++){ if (n...原创 2018-11-02 18:57:21 · 149 阅读 · 0 评论 -
[LeetCode]21. 合并两个有序链表 —— javascript
21. 合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 var mergeTwoLists = function (l1, l2) { var lHead = new ListNode(0); var lCur = lHead; while (l1 !== null && l2 !== ...原创 2018-11-01 15:58:34 · 293 阅读 · 0 评论 -
[LeetCode] 20. 有效的括号 —— javascript
有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。 var isValid = function(s) { var stack = []; var len = s.length; for...原创 2018-11-01 15:57:52 · 147 阅读 · 0 评论 -
[LeetCode] 14. 最长公共前缀 —— javascript
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。 var longestCommonPrefix = function(strs) { if (!strs.length) return ''; var str1 = strs[0]; var res = ''; var str1Len = str1.length;...原创 2018-11-01 15:57:00 · 235 阅读 · 1 评论 -
[LeetCode] 13. 罗马数字转整数 —— JavaScript
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12...原创 2018-11-01 15:55:22 · 235 阅读 · 0 评论 -
[LeetCode] 9.回文数 —— JavaScript
9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 var isPalindrome = function(x) { var num = x.toString(); return x == num.split('').reverse().join(''); }; //方法2 找到中间位置,然后两边对比 var...原创 2018-11-01 15:52:09 · 151 阅读 · 0 评论 -
[LeetCode] 简单题答案 —— javascript实现
最近发现数据结构真的好重要,好后悔上课时没有认真听。哎,说多了都是泪。。。所以朋友推荐了 LeetCode ,一个刷题的网站,嗯,不说了,刷题去了。会把一些做了的题写下来,可能我的算法不是最优解,不过欢迎大家指正哟~1. 两数之和...原创 2018-11-01 15:50:49 · 554 阅读 · 0 评论 -
[LeetCode] 7. 反转整数 —— JavaScript
反转整数给定一个 32 位有符号整数,将整数中的数字进行反转。 var reverse = function(x) { var num = x.toString().split(''); num = parseInt(num.reverse().join('')) if(num>=2147483647 || x===0){ retur...原创 2018-11-01 15:47:50 · 185 阅读 · 0 评论 -
[LeetCode] 28. 实现 strStr() 函数 —— javascript
28. 实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 var strStr = function(haystack, needle) { if (needle=='') return 0; var len2 =...原创 2018-11-02 18:57:55 · 139 阅读 · 0 评论 -
[LeetCode] 35. 搜索插入位置 —— javascript
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 var searchInsert = function(nums, target) { var len = nums.length; if (target<nums[0]) { return 0; }...原创 2018-11-02 18:58:11 · 215 阅读 · 0 评论 -
[LeetCode] 108. 将有序数组转换为二叉搜索树—— javascript
将有序数组转换为二叉搜索树将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 var sortedArrayToBST = function(nums) { var len = nums.length; if(!len) return null; if(le...原创 2018-11-03 20:48:00 · 218 阅读 · 0 评论 -
[LeetCode] 107. 二叉树的层次遍历 II —— javascript
二叉树的层次遍历 II给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) var levelOrderBottom = function(root) { var queue = []; var result = []; if(root) queue.push(root); while(queu...原创 2018-11-03 20:46:34 · 333 阅读 · 0 评论 -
[LeetCode]104. 二叉树的最大深度 —— javascript
二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。 var maxDepth = function(root) { if(!root) return 0; var left_depth = maxDepth(root.left); var right_depth =...原创 2018-11-03 20:43:06 · 675 阅读 · 0 评论 -
[LeetCode] 70. 爬楼梯 —— javascript
爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? var climbStairs = function(n) { let a = b = 1; for (let i = 0; i < n; i++) { [a, b] = [b, a + b];//ES6的递归写法 ...原创 2018-11-03 20:26:04 · 227 阅读 · 0 评论 -
[LeetCode] 88. 合并两个有序数组—— javascript
合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3...原创 2018-11-03 20:25:53 · 266 阅读 · 0 评论 -
[LeetCode]100. 相同的树 —— javascript
相同的树给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 var isSameTree = function(p, q) { if (p===null && q===null) return true; if (p===null || q===null) return false; ...原创 2018-11-03 20:25:36 · 229 阅读 · 0 评论 -
[LeetCode]101. 对称二叉树 —— javascript
对称二叉树给定一个二叉树,检查它是否是镜像对称的。 var isSymmetric = function(root) { if (!root) return true; var leftAndRight = function(left, right){ if (!left && !right) return true; ...原创 2018-11-03 20:25:24 · 429 阅读 · 0 评论 -
[LeetCode] 83. 删除排序链表中的重复元素—— javascript
删除排序链表中的重复元素 var deleteDuplicates = function(head) { var l = head; if(l==null) return null while(l.next){ if(l.val == l.next.val){ l.next = l.next.next; ...原创 2018-11-03 20:25:11 · 146 阅读 · 0 评论 -
[LeetCode]168. Excel表列名称 —— javascript
给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB ...var convertToTitle = function(n) { var res=''; while(n>0){ var a = parse...原创 2018-11-12 15:20:45 · 351 阅读 · 0 评论