leetcode题解
magic-zhu
菜的抠脚的前端
展开
-
leetcode题解 外观数列 replace高级用法
看到的 别人写的解法 很优秀代码 let s = '1' for(let i = 1; i < n; i++){ s = s.replace(/(\d)\1*/g, item =>`${item.length}${item[0]}`) } return s思路replace 第二个参数为函数 返回一个替代的值利用正则匹配 连续相同的数字 然后替换 —> 优秀!!...原创 2020-06-25 18:16:06 · 173 阅读 · 0 评论 -
leetcode题解 -实现strStr()
代码/** * @param {string} haystack * @param {string} needle * @return {number} */var strStr = function(haystack, needle) { if (needle === '') return 0; let l = haystack.length; let n = needle.length; for (let i = 0; i < l - n + 1; i+原创 2020-06-21 22:11:53 · 106 阅读 · 0 评论 -
leetcode-字符串转换整数 (atoi) :) 传说中的状态机
代码/** * @param {string} str * @return {number} */var myAtoi = function(str) { let map = [ [0,1,2,3], [3,3,2,3], [3,3,2,3], ] let reg =/[0-9]/ let r=''; let state = 0; for(let i=0,l=str.length;i<l;i++)原创 2020-06-10 22:09:20 · 195 阅读 · 0 评论 -
leetcode题解-顺时针打印矩阵
思路判断是否是空数组顺时针打印数组 可以按照字面意思 从外向里进行圈层遍历 。判断圈数可以遍历的圈数是根据短边来判断的这里有三种情况圈数为偶数的情况圈数为奇数的情况 且长>=宽圈数为奇数的情况 且长<宽当为偶数时 直接按照下面第一张图 将一圈分为四个部分 依次从顶点遍历即可当为奇数时 会产生行/列的冗余 最后只需要把冗余部分 依次push进数组就可以了代码var spiralOrder = function(matrix) { if (matrix.l原创 2020-06-06 14:43:31 · 196 阅读 · 0 评论 -
leetcode题解-字符串中的第一个唯一字符 & 有效的字母异位词 & 验证回文字符串
文章目录字符串中的第一个唯一字符代码思路有效的字母异位词代码思路验证回文字符串代码思路字符串中的第一个唯一字符代码var firstUniqChar = function(s) { let map = {}; let t = []; for(let i=0,l=s.length;i<l;i++){ if(map[s[i]]===undefined){ map[s[i]] =t.length; t.push(i);原创 2020-06-02 21:59:39 · 251 阅读 · 0 评论 -
leetcode题解-旋转图像(详细)
代码var rotate = function(matrix) { let l = matrix.length; for(let i=0;i<parseInt((l+1)/2);i++){ for(let j =0;j<parseInt(l/2);j++){ let temp = matrix[l - 1 - j][i]; matrix[l - 1 - j][i] = matrix[l - 1 - i][l - 1 - j]; matrix[l - 1 - i][l原创 2020-05-31 19:46:38 · 422 阅读 · 0 评论 -
leetcode题解-有效的数独
文章目录代码思路代码/** * @param {character[][]} board * @return {boolean} */var isValidSudoku = function(board) { let row=[{},{},{},{},{},{},{},{},{}]; let column=[{},{},{},{},{},{},{},{},{}]; let box = [{},{},{},{},{},{},{},{},{}]; for(let i=原创 2020-05-27 22:51:11 · 210 阅读 · 0 评论 -
leetcode题解JavaScript-两数之和
代码/** * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) { let map = {}; for(let i = 0,l=nums.length;i<l;i++){ if(map[target-nums[i]]!==undefined){ return[map[ta原创 2020-05-24 13:05:58 · 240 阅读 · 0 评论 -
leetcode题解-移动零
代码/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */var moveZeroes = function(nums) { let n = 0; for(let i=0,l=nums.length-1;i<l;i++){ if(nums[i]==0){ nums.splice(i,1);原创 2020-05-23 23:00:38 · 127 阅读 · 0 评论 -
leetcode题解-两个数组的交集 II
复杂度 O(2n)利用map的key可以是数字 把第一个数组放进map中如果不存在key 那么value =1 存在value+1第二数组去查找映射 如果存在 key对应 则为交集 相对应的value-1或者变为undefined/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */var intersect = function(nums1, nums2) { let map原创 2020-05-21 21:21:36 · 195 阅读 · 0 评论 -
leetcode题解-加1
简单的方法 处理非常大的整数 会出错 所以换了一个方式采用递归从最后一位—+1开始判断 如下图所示var plusOne = function(digits) { let l = digits.length - 1; plus(digits,l); return digits};function plus(digits,n){ if(digits[n]+1>=10){ digits[n] = digits[n]-9; if(n==0原创 2020-05-18 22:15:08 · 178 阅读 · 0 评论 -
leetcode题解 javascript版本 - 买卖股票的最佳时机 II
如上图所示 A+B>=C (D不存在的情况下A+B=C)只要找到所有 后面比前面高的点 就可以了(动态规划…?)var maxProfit = function (prices) { let profit = 0; for (let i = 1; i < prices.length; i++) { if(prices[i]>prices[i-...原创 2020-04-28 22:05:38 · 127 阅读 · 0 评论