
算法
文章平均质量分 55
quan!!!
这个作者很懒,什么都没留下…
展开
-
常见的查找算法----折半查找(JavaScript实现)
递归实现 function binarySearch (arr, element) { return searchSort(arr, element, 0, arr.length-1); } function searchSort(arr, element, left, right) { if(left > right) { ...原创 2019-02-13 21:59:13 · 435 阅读 · 0 评论 -
剑指OFFER----27、镜像二叉树(js实现)
二叉树的镜像定义:源二叉树 8 / \6 10/ \ / \5 7 9 11镜像二叉树 8&nbs原创 2019-03-07 16:36:36 · 275 阅读 · 0 评论 -
剑指OFFER----16、数值的整数次方(js实现)
function Power(base, exponent){ // write code here return Math.pow(base, exponent)}原创 2019-04-04 21:19:05 · 446 阅读 · 0 评论 -
剑指OFFER----15、输出数二进制1的个数(js实现)
如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而前面的1保持不变,因此得到的结果是1011.我们发现减1的结果是把最右边的一...原创 2019-04-04 21:34:00 · 174 阅读 · 0 评论 -
剑指OFFER----20、包含min函数的栈(js实现)
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))let arr = []function push(node){ // write code here arr.push(node)}function pop(){ // write code here return arr.pop()}functio...转载 2019-04-04 22:11:14 · 178 阅读 · 0 评论 -
剑指OFFER----32-1、从上往下打印二叉树 (js实现)
从上往下打印出二叉树的每个节点,同层节点从左至右打印。/* function TreeNode(x) { this.val = x; this.left = null; this.right = null;} */function PrintFromTopToBottom(root) { //write code here if(root === nu...原创 2019-04-05 19:08:08 · 323 阅读 · 0 评论 -
树的路径搜索
let tree = { val: '计算机学院', children: [{ val: '软件工程', children: [{ val: '一班', children: [] }, { val: '二班', children: [] }...原创 2019-08-23 18:12:59 · 836 阅读 · 0 评论 -
从第一字符串中找到第二字符串,并替换成第三字符串
function change(str1, str2, str3) { let arr1 = [...str1] let arr2 = [...str2] let arr3 = [...str3] if (arr2.length > arr1.length) { return str1 } let result = [] ...原创 2019-08-28 18:26:22 · 823 阅读 · 0 评论 -
剑指OFFER----11、旋转数组中的最小数字(js实现)
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:(1)我们用两个指针left,right分别指向数组的第一个元素和最后一个元素。按照题目的旋转的规则,第...原创 2019-03-07 11:43:37 · 311 阅读 · 0 评论 -
剑指OFFER----10-3、青蛙跳台阶问题变态版(js实现)
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析: 这里的f(n) 代表的是n个台阶有一次1,2,…n阶的 跳法数。n = 1时,只有1种跳法,f(1) = 1n = 2时,会有两个跳得方式,一次1阶或者2阶,这回归到了问题(1) ,f(2) = f(2-1) + f(2-2)n = 3时,会有三种跳得方式,...原创 2019-03-07 11:04:16 · 683 阅读 · 0 评论 -
剑指OFFER----10-2、青蛙跳台阶问题(js实现)
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析:题目很简单,稍微分析就知道这是斐波那契数列,所以可以动态规划来做a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)c.由a\b假设可以得出总跳法为: f(n) = f(n...原创 2019-03-06 22:53:22 · 698 阅读 · 0 评论 -
常见的排序算法----堆排序(选择类,JavaScript实现,经典版本)
//调整函数 function headAdjust(elements, pos, len) { //将当前节点值进行保存 var swap = elements[pos]; //定位到当前节点的左边的子节点 var child = pos * 2 + 1; //递归,直至没有子节点为止 ...转载 2019-02-13 21:33:50 · 186 阅读 · 0 评论 -
判断一个单词是否是回文(JavaScript实现)
什么是回文回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。比如 mamam,redivider实现function checkPalindrom(str) { return str == str.split('').reverse().join('');}...转载 2019-02-13 22:13:57 · 1087 阅读 · 0 评论 -
去掉一组整型数组重复的值(JavaScript实现)
概述比如 输入: [1,13,24,11,11,14,1,2], 输出: [1,13,24,11,14,2] ,需要去掉重复的11 和 1 这两个元素。主要考察个人对Object的使用,利用key来进行筛选。var unique = function(arr) { var hashTable = {}; var data = []; for(let i=0,l=arr.le...转载 2019-02-13 22:16:38 · 560 阅读 · 0 评论 -
557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。var reverseWords = function(s) { let ar...转载 2019-03-06 15:27:40 · 71 阅读 · 0 评论 -
剑指OFFER----1、二维数组的查找(js实现)
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:每次选择矩阵右上角的数进行比较,如果是大于查找数,则删掉那一列,如果小于那个数,则删掉那一行,其实并不是删除,只是选择新的右上角数进行比较var arr = [];arr[0] = [1,2,8,9];arr[1] =...转载 2019-03-06 20:01:32 · 246 阅读 · 0 评论 -
剑指OFFER----7、重建二叉树(js实现)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回function reConstructBinaryTree(pre, vin) { if (pre.length === 0 || vin.length ...原创 2019-03-06 21:08:19 · 314 阅读 · 0 评论 -
剑指OFFER----9、两个栈实现队列(js实现)
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思想:栈是先进后出,队列是先进先出,因此两个栈,一个用来push,一个用来pop,同时注意下两个栈不为空的时候。var outStack = [], inStack = [];function push(node) { inStack.push(node);}function pop() { ...原创 2019-03-06 21:21:05 · 202 阅读 · 0 评论 -
剑指OFFER----10-1、斐波那契数列(js实现)
斐波那契数列数列从第3项开始,每一项都等于前两项之和。例子:数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…// 递归实现function Fibonacci(n) { if (n >= 0) { i...原创 2019-03-06 22:41:32 · 590 阅读 · 0 评论 -
字符串匹配(JS实现)
题目判断第一个字符串是否包含第二个字符串function change(str1, str2) { if (str1 === str2) { return true } let arr1 = [...str1] let arr2 = [...str2] if (arr2.length > arr1.length) { ...原创 2019-08-28 19:15:29 · 4558 阅读 · 0 评论