自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 用2*1的小矩形横着或者竖着去覆盖更大的矩形,请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法

题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形,请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法思路:斐波拉契类算法题。由n=1时有1种方法,n=2时有2种方法,n=3时有3种方法,推出f(n) = f(n-1) + f(n-2)代码:function ways(n) { if(n <= 2) return n var f...

2019-06-04 13:12:09 347

原创 最大公共子串

题目描述:编程找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串"cad"思路:比较两个字符串的长度,将短字符串str中从长到短的子串依次拿出,看是否在长字符串str1中出现代码:function logestCommonStr(str1, str2) { if(str1.length < str2.length) [s...

2019-06-04 11:22:39 151

原创 约瑟夫环

题目描述:约瑟夫环是一个数学应用题:已知n个人(编号1、2、..n)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个又从1开始报数,数到m的那个人又出列;依次规律重复下去,直到圆桌周围的人全部出列。请编写一个程序,给定n、m计算出列人员先后顺序。思路:index索引0...n-1表示编号1...n,index = (index + 1) % n实现在0...n-1内递...

2019-06-04 10:39:12 214

原创 青蛙变态跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:每个台阶可以看做是一块木板,让青蛙跳上去,n个台阶就有n块木板,最后一块木板是青蛙达到的位子,必须存在,其他(n-1)块木板可以选择是否存在,则每个木板有存在和不存在两种选择,(n-1)块木板就有2^(n-1)种跳法。代码:function jumpFloor...

2019-06-03 12:44:30 126

原创 实现if(a == 1 && a == 2 && a == 3)为true

function getExpressionTrue() { var a = { i: 1, toString: function() { return a.i++ } } if(a == 1 && a == 2 && a == 3) { console...

2019-04-17 18:18:08 3391

原创 实现超出整数范围的两个大整数相加

题目描述:实现一个函数,将两个超过js整数存储范围的大整数相加,参数和返回值都是字符串类型的。输入:‘1111111111’,‘2222222222’输出:‘3333333333’function add(str1, str2) { var arr1 = str1.split(''), arr2 = str2.split(''), extra ...

2019-04-17 15:22:38 1996

原创 多位数字每隔3位加一个逗号

题目描述:多位数字从后往前每隔3位加一个逗号例:输入:12345678输出:12,345,678function addComma(num) { var str = num.toString(), res = '' while(str.length > 3) { res += ',' + str.slice(-3) + re...

2019-04-17 09:18:50 2085

原创 判断二叉树是否是平衡二叉树

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树function TreeNode(x) { this.val = x this.left = null this.right = null}function IsBalanced_Solution(pRoot) { if(!pRoot) return true var llen = tree...

2019-04-16 15:42:31 121

原创 交换二叉树中每个节点的左右子树

题目描述:交换二叉树中每个节点的左右子树例:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5function ...

2019-04-16 14:57:26 1537

原创 求一棵二叉树的深度

题目描述:输入一棵二叉树,求该树的深度。从根节点到叶节点形成树的一条路径,最长路径的长度为树的深度。function TreeNode(x) { this.val = x this.left = null this.right = null}function TreeDepth(root) { if(!root) return var llen...

2019-04-16 11:37:30 758

原创 根据二叉树的前序遍历和中序遍历重建二叉树

题目描述:输入二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和和中序遍历的结果中都不含重复数字。例如输入的前序遍历序列{1,2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6},则重建二叉树并返回function TreeNode(x) { this.val = x this.left = null ...

2019-04-16 11:09:51 154

原创 0-1背包问题

题目描述:给定n种物品和一背包,物品i的重量是w[i],其价值为v[i],背包的容量为total,问应该如何选择装入背包的物品,使得装入背包中物品的总价值bestVal最大。基本思想:把问题的解空间转换成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历过程中记录和寻找所有可行解或者最优解。基本思想类似于图的深度优先搜索和二叉树的后序遍历。var n = 3, //物品数量...

2019-04-08 11:43:59 880

原创 字节跳动一面算法题

题目描述:有一个项目,由于多人维护,导致版本号规则,例如versions = ['1.45.0', '1.5.2', '1.5', '6', '3.3.3.3.3.3']res = ['1.5', '1.5.2', '1.45.0', '6', '3.3.3.3.3.3']解法function versionsSort(arr) { let res = []...

2019-03-25 18:35:06 1096

原创 665. 非递减数列(JavaScript)

题目描述:给定一个长度为n的整数数组,你的任务是判断在最多改变1个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中所有的i(1 <= i < n),满足array[i] <= array[i + 1]。示例 1:输入: [4,2,3]输出: True解释: 你可以通过把第一个4变成1来使得它成为一个非递减...

2019-03-20 19:46:42 282

原创 8. 字符串转换整数 (atoi)

题目描述:请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多...

2019-03-20 17:20:24 141

原创 归并排序

function merge(arr1, arr2) { var res = [] while(arr1.length &amp;&amp; arr2.length) { if(arr1[0] &lt; arr2[0]) { res.push(arr1.shift()) } else { res.pu...

2019-03-13 11:25:51 143

原创 快速排序

function quickSort(arr) { var len = arr.length if(len &lt;= 1) return arr var partionIndex = Math.floor(len / 2), temp = arr[partionIndex], left = [], right = [] ...

2019-03-13 11:14:23 138

原创 冒泡排序

function bubbleSort(arr) { var len = arr.length for(var i = len - 1; i &gt; 0; i--) { for(var j = 0; j &lt; i; j++) { if(arr[j] &lt; arr[j+1]) { var temp =...

2019-03-13 11:08:59 133

原创 数组去重

题目描述:去除数组中重复的元素法一:function unique(arr) { function sort(a, b) { return a - b } var sortArr = arr.sort() var res = [] for(let i = 0; i < sortArr.length; i++) { ...

2019-03-11 21:01:35 119

原创 交换二叉树各节点左右子树

题目描述:交换二叉树中所有节点的左右子树function Node(key) { this.key = key; this.left = null; this.right = null;}function swap(node) { if(node == null) return let tempNode = new Node(...

2019-03-11 20:31:09 2083

原创 括号匹配

题目描述:给定一个由()和[ ]组成的字符串,逐个提取出()和 [ ],并且输出来,要求时间复杂度为O(n)。例如:'(([]()[])[])'结果:[ ] ( ) [ ] ( ) [ ] ( )function bracket(str) { let arr = [], len = str.length for(let i = 0; i &lt; le...

2019-03-11 20:07:33 147

原创 打家劫舍(JavaScript)

题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ...

2018-09-12 20:53:21 579

原创 第一个错误的版本(JavaScript)

题目描述:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单...

2018-09-12 19:25:10 475

原创 合并两个有序数组(JavaScript)

题目描述:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。  示例:输入:nums1 = [1,2,3,0,0,0], m = 3...

2018-09-12 19:22:09 324

原创 爬楼梯(JavaScript)

题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶...

2018-09-12 19:19:35 691

原创 最大子序和(JavaScript)

题目描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路:初始化sum和max为nums[0],遍历数...

2018-09-12 19:13:30 461

原创 873. 模拟松鼠(JavaScript)-LintCode

题目描述:有一棵树,一只松鼠和几个坚果。位置由二维网格中的单元格表示。你的目标是找到最短的距离,让松鼠收集所有的坚果,并把它们一个一个地放在树下。松鼠一次只能最多吃一个坚果,可以在四个方向上移动——上、下、左、右,到相邻的细胞。距离用移动的次数表示。样例给定高度= 5,width = 7, treePosition = [2,2], squirrel =[4,4],螺母= [[3,0], ...

2018-09-04 09:43:32 240

原创 723. 左旋转二进制位(JavaScript)-LintCode

题目描述:位旋转 -—— 旋转(或循环移位)是类似于移位的操作, 不同的是一端脱落的那一位会被放回到另一端在左旋转中, 左端掉下来的那一位会放在右端假设 n 用 8 位二进制来存. 对 n = 11100101 左旋转 3 位, 得到 n = 00101111 (左移3位, 原先的前3位放在末尾).如果 n 用 16 位或 32 位二进制来存, 那么对 n (000…11100101)左旋转...

2018-09-01 17:39:24 207

原创 59. 螺旋矩阵 II(JavaScript)

题目描述:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]思路:定义边界top、right、bottom、left分别表示矩阵的上边界、右边界、下边界和左边界,以向右-&gt;向下-&gt;向左-&gt;向上的顺序生成矩阵...

2018-09-01 16:33:03 169

原创 9. 回文数(JavaScript)

题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true思路:将整数转换成字符串,然后遍历字符串判断前后是否相等。/** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { ...

2018-09-01 15:55:21 391

原创 238. 除自身以外数组的乘积(JavaScript)

题目描述:给定长度为 n 的整数数组 nums,其中 n &gt; 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度...

2018-08-30 09:50:38 484

原创 9. 回文数(JavaScript)

题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true思路:将整数转换成相对应的十进制的字符串,然后前后对称的位置判断是否相等/** * @param {number} x * @return {boolean} */ var isPalindrome = function(x)...

2018-08-28 19:10:50 362

原创 191. 位1的个数(JavaScript)

题目描述:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011解法1思路:将无符号整数转换成二进制,然后逐位判断是否为1/** * @param {number} n - a positiv...

2018-08-28 18:51:00 142

原创 54. 螺旋矩阵(JavaScript)

题目描述:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]解法一:思路:1. 循环遍历矩阵,循环终止条件:遍历元素个数count等于矩阵元素个数rows * cols;...

2018-08-26 17:32:25 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除