javascript算法题
The_upside_of_down
这个作者很懒,什么都没留下…
展开
-
JavaScript数据结构之二叉树常见算法
一、二叉树层级遍历 // 初始化二叉树 function TreeNode(val){ this.val = val; this.left = this.right =null; } function levelOrder(root) { var res = []; if(!root) return re...原创 2019-11-27 23:10:49 · 289 阅读 · 0 评论 -
forEach循环里头使用splice()遇到的坑
1、循环arr数组,将item为1的元素从数组中删除。let arr = [1,1,2];arr.forEach((item,index,arr) =>{ if(item == 1 ) { arr.splice(index,1)}})console.log(arr); //[1,2]2、结果:循环之后打印[1,2],还有一个1无法删除。3、原因分析: ...原创 2019-11-18 22:45:03 · 1081 阅读 · 0 评论 -
输入一个数组若满足a[i]+a[j]=a[k],返回true。
function search(arr) { for(var i = 0; i < arr.length; i++){ var left = arr[i]; for(var j = i+1; j < arr.length; j++){ var right = arr[j]; ...原创 2019-11-14 22:47:19 · 488 阅读 · 0 评论 -
求一个数组的连续子数组的最大和
输入一个整型数组,数组中有正有负。数组中的一个或多个整数组成一个子数组。求所有子数组的和的最大值,要求时间复杂度为O(n)。首先,根据题意,可能我们都会想到枚举数组中所有的子数组的和。我们都知道一个长度为n的数组,总共有n(n+1)/2个子数组。计算出所有子数组的和需要O(n^2)时间。我们先来举例分析下数组的规律,给出一个数组{1,-2,3,10,-4,7,2,-5}。步骤 操...原创 2019-09-10 22:00:37 · 403 阅读 · 0 评论 -
求1~n中1的个数
输入一个整数,求1~n这n个数的十进制表示1的个数。将n的十进制的每一位单独拿出讨论,每一位的值记为weight。1、个位假若n=534。534的个位从0~9变化了53次,这53我们记为round。因为weight为4>0。因此第54轮为0~4,因此1出现了count=round+1。若weight为0,则出现count=round。2、十位与个位类似,但不同点在于从...原创 2019-09-10 23:25:18 · 480 阅读 · 0 评论 -
二进制中1的个数
实现一个函数,输入一个整数,输出该数的二进制表示1的个数。例如9的二进制数位1001,则1的个数为2。因为js中有一个toString()属性可以将十进制转换为任意进制的数,因此我们使用toString(2)将整数转换为二进制数。代码实现如下:function str(n){ var m = n.toString(2); var count = 0; ...原创 2019-09-10 23:48:12 · 141 阅读 · 0 评论