
算法
Miya_Ye
这个作者很懒,什么都没留下…
展开
-
LeeCode 39. 组合总和
var combinationSum = function(candidates, target) { const len = candidates.length; const ret = []; const dfs = (start, buf=[],target) => { for(let index = start;index < len;index++){ buf.push(candidates[index]); .原创 2020-09-11 10:40:28 · 158 阅读 · 0 评论 -
LeeCode373 前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) ,n是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案...原创 2020-09-08 13:32:50 · 164 阅读 · 0 评论 -
LeeCode 198 打家劫舍
由于不可以在相邻的房屋闯入,所以在当前位置 n 房屋可盗窃的最大值,要么就是 n-1 房屋可盗窃的最大值,要么就是 n-2 房屋可盗窃的最大值加上当前房屋的值,二者之间取最大值var rob = function(nums) { const len = nums.length; if(len === 0) return 0; let dp=[];...原创 2019-12-23 15:28:58 · 323 阅读 · 0 评论 -
LeeCode121 买卖股票的最佳时机
var maxProfit = function(prices) { let min = prices[0]; let max =0; let len = prices.length; for (let index=1;index<len;index++){ if(prices[index]< min){ min...原创 2019-12-16 14:32:09 · 211 阅读 · 1 评论 -
LeeCode 53 最大自序和
var maxSubArray = function(nums) { let ans = nums[0]; let len = nums.length; let sum = 0; for(let index = 0;index < len;index++){ if(sum > 0){ sum +=nums[ind...原创 2019-12-11 15:23:56 · 138 阅读 · 0 评论 -
LeeCode49 字母异位词分组
var groupAnagrams = function(strs) { let hashmap = new Map() for(let index = 0;index < strs.length;index++){ let str = strs[index].split('').sort().join(); if(hashmap.has(...原创 2019-12-02 14:26:52 · 164 阅读 · 0 评论 -
LeeCode 50 Pow(x, n)
function divide(x,n){ if(n == 0) return 1; let subresult = divide(x,parseInt(n/2)) if(n&1 === 1){ return subresult*subresult*x; }else{ return subresult*subres...原创 2019-12-02 14:00:55 · 153 阅读 · 0 评论 -
LeeCode 415 两字符串相加
var addStrings = function(num1, num2) { let str =''; let carry = 0; let i = num1.length - 1; let j = num2.length - 1; while(i>= 0 || j >=0){ let n1 = i>= 0?num1[i...原创 2019-10-21 13:18:20 · 143 阅读 · 0 评论 -
LeeCode 40 组合2
var combinationSum2 = function(candidates, target) { candidates.sort((a,b)=>{return b-a}) let len = candidates.length let min = candidates[len-1]; let res=[]; let path =[]; ...原创 2019-10-18 10:50:06 · 197 阅读 · 0 评论 -
LeeCode 39 组合
var combinationSum = function (candidates, target) { candidates.sort((a,b)=>{return b-a}) let len = candidates.length let min = candidates[len-1]; let res=[]; let path =[]; ...原创 2019-10-18 10:19:11 · 177 阅读 · 2 评论 -
LeeCode 38 报数
原题解来自https://leetcode-cn.com/problems/count-and-say/solution/jsdi-gui-jie-jue-by-wo-shi-gao-xiao-de/看了这个哥们的解法,觉得特别好,顺便复习了下正则var countAndSay = function(n) { if(n==1){ return n.toStrin...原创 2019-10-16 10:49:05 · 165 阅读 · 0 评论 -
LeeCode 搜索插入位置 (复习了下二分法)
var searchInsert = function(nums, target) { let left = 0; let right = nums.length-1; if(target > nums[right]) return nums.length; while(left < right){ let mid ...原创 2019-10-09 10:00:14 · 197 阅读 · 0 评论 -
LeeCode 914 卡牌分组
function gcd(a, b) { return a % b === 0 ? b : gcd(b, a % b);}var hasGroupsSizeX = function(deck) { let len = deck.length; if(len <= 1 || len> 10000) return false; cons...原创 2019-10-08 11:15:00 · 141 阅读 · 0 评论 -
算法 最长公共前缀
var longestCommonPrefix = function(strs) { let len = strs.length; let str = ''; if(len === 0){ return '' } if(len === 1){ return strs[0] } str = findPublicPrefix(strs[0],...原创 2019-08-14 14:44:56 · 137 阅读 · 0 评论 -
算法(Leetcode) 盛最多水的容器
木桶原则只循环一次,算法关键点是理解体积 受制于最短的板var maxArea = function(height) { let l = 0; let r=height.length - 1; let maxarea = 0; while(l < r){ maxarea = Math.max(maxarea,(r-l)*Math.m...原创 2019-08-14 14:47:52 · 220 阅读 · 0 评论 -
LeeCode 整数反转
var reverse = function(x) { let str = x.toString(); if(str.length == 0){ return 0; } let asc = str[0] let final = '' if(asc === '-' || asc === '+'){ st...原创 2019-08-23 16:05:40 · 150 阅读 · 0 评论 -
算法系列 整数转罗马数字
最近更新频率小了,感觉这样下去就荒废了,在做好本职工作的前提下,还是应该有所提升和进步,再次开始刷领扣吧~定个规矩,还是先自己想自己写,然后再看人家的做法,即使自己写的烂也好歹是自己的想法,今天做了整数转罗马数字,我是这么写的,有点繁琐,不过还算一遍对了/** * @param {number} num * @return {string} */function handleThou...原创 2019-08-13 10:35:06 · 128 阅读 · 0 评论 -
LeeCode 字符串转整数
var myAtoi = function(str) { let desStr = str.trim(); if(desStr.length === 0 ){ return 0; } let asc = desStr[0]; if(asc != '+' && asc != '-' && !/^\d...原创 2019-08-22 18:34:53 · 203 阅读 · 0 评论 -
LeeCode 三数之和
之前想用三重循环,或者用Hash的方法来解决这个问题,但是没办法去重后来还是参考了下别人的var threeSum = function(nums) { let num = nums.sort((a, b) => a - b); let res = [] if(num.length === 0) return res if(num...原创 2019-08-26 14:38:45 · 148 阅读 · 0 评论 -
LeeCode 最接近三数之和
和昨天的那道题目很像,理解了后这道题20分钟就出来了var threeSumClosest = function(nums, target) { nums.sort((a,b) => a-b); let size = nums.length; let keepminus = undefined; for(let i...原创 2019-08-27 10:37:17 · 157 阅读 · 0 评论 -
LeeCode 电话号码的字母组合
这个题目用到了reduce和map,还了解了下这种排列组合叫做笛卡尔卷积,以后这种组合的就可以多考虑用用reducevar letterCombinations = function(digits) { if(digits === '') return []; let hash = { '2':['a','b','c'], '3':[...原创 2019-08-28 11:13:19 · 169 阅读 · 0 评论 -
LeeCode 删除链表的倒数第N个节点
头发蒙,今天不知道失败了多少次才做出来。。。双指针又是var removeNthFromEnd = function(head, n) { let first = head; let count = 0; let second = head; if(head.next == null){ return null }...原创 2019-09-03 17:37:06 · 118 阅读 · 0 评论 -
LeeCode 有效的括号
var isValid = function (s) { var map = { "(": ")", "[": "]", "{": "}" } var leftArr = [] for (var ch of s){ if (ch in map) leftArr.push(ch); //为左括号时,顺序...转载 2019-09-04 10:43:07 · 118 阅读 · 1 评论 -
LeetCode 删除排序数组中的重复项
被这个程序的描述误导了有点,其实要求返回的是不重复的数组个数var removeDuplicates = function(nums) { let len = nums.length; let newLen = 0; for(let index =0; index <len;index++){ nums[newLen] = nums[index...原创 2019-09-18 16:50:52 · 124 阅读 · 0 评论 -
算法 罗马数字转整数
今天撸的第二道题,动脑的感觉不错,照例写了一大坨,看来要好好看看算法了思路就是取两个字符,看是否在字典中,如果有,就累计,并且跳过两个走下一轮,如果没有就查单个字符的字典累计,不过虽然麻烦,但是跑起来用时比下面写的经典的低100多毫秒,(用了slice,后面才想起来还有substr。。。)var romanToInt = function(s) { let nums = [100...原创 2019-08-13 14:05:53 · 116 阅读 · 0 评论