算法
柠檬布丁^O^
越努力越幸运
展开
-
从1到5每隔一秒打印出一个数
for(var i=1;i<=5;i++){ (function(i){ setTimeout(()=>{ console.log(i) },i*1000) })(i)}原创 2020-08-26 10:59:22 · 613 阅读 · 2 评论 -
给定两个数组,写一个方法来计算它们的交集
let num1=[1,2,2,3,4,3,1];let nums2=[2,3,5,7,8];let res=[];num1.forEach(item=>{ let index=nums2.indexOf(item); if(index!==-1){ res.push(item); nums.splice(index,1); }})console.log(res);原创 2020-08-24 19:40:42 · 1184 阅读 · 0 评论 -
刷题
解题思路:玩家取数的时候取的数一定是使最后他的积分最大数,而BOOS取数取的数一定是使剩下的数让玩家取数积分最小的数。var n=parseInt(readline());var arr=[];for(var i=0;i<n;i++){ arr.push(readline());}var sum=0;//数字总和for(var k=0;k<arr.length;k++...原创 2019-04-14 23:07:41 · 177 阅读 · 0 评论 -
刷题(最优升级路径)
思路:深度优先遍历将所有路径及路径值放入数组,比较路径值选择最小的var line1=readline().split(" ");var l=line1[0],r=line1[1];var arr=[];while(line2=readline().split(" ")){ arr.push(line2);}var len=0;var m=[l];var res=[];fu...原创 2019-04-15 11:33:20 · 146 阅读 · 0 评论 -
刷题(leetcode字符串相关)
125.验证回文字符串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。思路:将字符串中的大写字母转成小写,只保留字母和数字,然后将字符串与这个字符串的反转作比较var isPalindrome = function(s) { if(s.length<=1) return true; s=...原创 2019-04-23 17:36:07 · 314 阅读 · 0 评论 -
刷题(leetcode字符串相关)
8.字符串换成整数var myAtoi = function(str) { //删除前后空格 var arr=str.replace(/^\s+|\s+$/g,"").split(""); //为空返回0 if(arr.length<1) return 0; //flag标识最后输出的结果的正负 var flag=1,res; //如果...原创 2019-04-20 08:41:20 · 143 阅读 · 0 评论 -
刷题(leetcode字符串相关)
38.报数报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:思路:对前一个数进行报数,首先遍历n,把从2开始记录n的每个数,通过遍历字符串求解遍历的每个数var countAndSay = function(n) { if(n==1) return "1"; var str="11"; for(var i=2;i<n;i++){...原创 2019-05-09 21:03:21 · 245 阅读 · 0 评论 -
合并区间(leetcode数组相关)
给出一个区间的集合,请合并所有重叠的区间。解题思路:先排序(排序按照数组中的每一项的第一个的大小),后合并var merge = function(intervals) { var len=intervals.length; if(len<1) return intervals; //排序 intervals.sort((a,b)=>a[0]-b[0]);...原创 2019-08-13 23:08:55 · 417 阅读 · 0 评论 -
最大子序和(leetcode数组相关)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。解题思路:将最大值maxSum设置为第一个值,然后对数组进行遍历,sum为当前最大连续子序列的和,如果sum<=0,将当前的sum设置为当前遍历值,因为如果当前值如果无论正负,加上sum会变得更小。如果大于0,就加上当前遍历值。var maxSubArray = function(nu...原创 2019-08-15 00:00:58 · 208 阅读 · 0 评论 -
路径选择(leetcode数组相关)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?思路:机器人在一个位置时移动只有两种可能,向右或向下,那么在二维数组上的位置dep[i][j]=dep[i-1][j]+dep[i][j+1],如果m=1,无论n是多少;在二维数组d...原创 2019-08-15 23:34:58 · 227 阅读 · 0 评论 -
数组去重的多种方式
数组去重//第一种function removeDuplicate1(arr){ let newArr=[]; for(let i=0;i<arr.length;i++){ if(newArr.indexOf(arr[i])==-1){ newArr.push(arr[i]); } } return newArr;}//第二种function removeDu...原创 2019-09-24 22:42:32 · 188 阅读 · 0 评论 -
js实现循环队列
1.基本队列的实现:基本队列的方法有:1)向队尾添加元素(enqueue)2)从对头删除元素(dequeue)3)查看队列头部元素(front)4)查看队列是否为空(isEmpty)5)查看队列的长度(size)6)查看队列(print)function Queue(){ //使用数组初始化队列 var items=[]; //向队列插入元素 this.enqueue=fu...原创 2019-04-17 10:38:39 · 3179 阅读 · 1 评论 -
刷题(树相关leetcode3)
129.求根到叶子节点数字之和给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。思路:遍历出来每一条路径,然后变成数字相加var sumNumbers = function(root) { ...原创 2019-04-08 23:08:30 · 207 阅读 · 1 评论 -
排序算法(冒泡、选择、插入、快速、堆、归并)排序
冒泡排序:function bubbleSort(arr){ let len=arr.length; for(let i=0;i&amp;amp;amp;amp;lt;len-1;i++){ for(let j=0;j&amp;amp;amp;amp;lt;len-1-i;j++){ if(arr[j]&amp;amp;amp;amp;gt;arr[j+1]){ let temp=arr[j+1];原创 2018-11-17 20:33:28 · 424 阅读 · 0 评论 -
各种常用排序算法的时间复杂度
排序方法 时间复杂度 空间复杂度 稳定性 复杂性 平均情况 最好情况 最坏情况 辅助空间 直接插入排序 O(n^2) O(n) O(n^2) O(1) 稳定 简单 希尔排序 O(n^1....原创 2018-11-24 23:25:11 · 3802 阅读 · 0 评论 -
简单算法
对string对象进行扩展使其具有删前后空格的方法String.prototype.trim=function(){ return this.replace(/^\s+|\s+$/g,"");}var str=" abab "console.log(str.trim());求两个数的最大公约数function f(num1,num2){ for(var i=Math.min...原创 2018-12-14 20:13:03 · 100 阅读 · 0 评论 -
笔试算法题
牛牛有4根木棍,长度分别为a,b,c,d。羊羊家提供改变木棍长度的服务,如果牛牛支付一个硬币就可以让一根木棍的长度加一或者减一。牛牛需要用这四根木棍拼凑一个正方形出来,牛牛最少需要支付多少硬币才能让这四根木棍拼凑出正方形。//let arr=readline().split(" ");let arr=["4","1","5","4"];let newArr=[];for(let i=0;i...原创 2018-12-23 22:26:13 · 559 阅读 · 0 评论 -
剑指offer数组、字符串相关2(javascript)
46.把数字翻译成字符串function GetTranslationCount(number){ if(number<0) return 0; var numberStr=number+""; var len=numberStr.length; var counts=[]; var count=0; for(var i=len-1;i>=0;i--){ cou...原创 2019-02-21 16:58:17 · 106 阅读 · 0 评论 -
剑指offer字符串、二叉树、数组、队列(javascript)
49.丑数原创 2019-02-23 18:59:55 · 128 阅读 · 0 评论 -
剑指offer数组相关(javascript)
39.数组中出现超过一半的数字function MoreHalfNum(arr){ if(arr.length<1) return 0; var result=arr[0],num=1; for(let i=1;i<arr.length;i++){ if(num==0){ result=arr[i]; }else if(arr[i]==result){ ...原创 2019-02-20 15:26:41 · 84 阅读 · 0 评论 -
刷题(数组相关leetcode)
16.最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。思路:遍历计算数组中每一个值与数组中其他两个值的结果,将最接近target的值赋值给结果值var threeSumClosest = function(nums, target) {...原创 2019-04-04 20:35:17 · 242 阅读 · 0 评论 -
刷题(树相关leetcode1)
94.二叉树的中序遍历给定一个二叉树,返回它的中序 遍历思路:中序遍历是先遍历根节点,然后遍历左子树节点,再遍历右字数节点,对左子树个右子树进行递归遍历var inorderTraversal = function(root) { var arrLeft=[]; var arrRight=[]; if(root){ var currentLeft=r...原创 2019-04-06 12:32:55 · 126 阅读 · 0 评论 -
刷题(树相关leetcode2)
104.二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。思路:遍历树的每个分支的深度。如果当前分支深度大于定义的最大深度,则将当前分支的最大值赋给定义的最大值var maxDepth = function(root) { if(root==null) return 0; var...原创 2019-04-07 10:43:27 · 133 阅读 · 0 评论 -
简单算法
1.给定一个升序数组,如何找到连续的元素,并返回连续元素组成的序列?例如,给定数组[1,2,3,4,6,9,22,23],返回数组[“1-&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;4”,“6”,“9”,“22-&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;23”]function continuousArray(arr){ var newArr=[&amp;amp;amp;amp;原创 2018-11-14 11:46:36 · 706 阅读 · 0 评论