笔试面试算法
gccjjiayou
这个作者很懒,什么都没留下…
展开
-
数组去重
题目描述:去除数组中重复的元素法一: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 · 118 阅读 · 0 评论 -
实现超出整数范围的两个大整数相加
题目描述:实现一个函数,将两个超过js整数存储范围的大整数相加,参数和返回值都是字符串类型的。输入:‘1111111111’,‘2222222222’输出:‘3333333333’function add(str1, str2) { var arr1 = str1.split(''), arr2 = str2.split(''), extra ...原创 2019-04-17 15:22:38 · 1994 阅读 · 0 评论 -
多位数字每隔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 · 2079 阅读 · 0 评论 -
字节跳动一面算法题
题目描述:有一个项目,由于多人维护,导致版本号规则,例如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 · 1093 阅读 · 0 评论 -
归并排序
function merge(arr1, arr2) { var res = [] while(arr1.length && arr2.length) { if(arr1[0] < arr2[0]) { res.push(arr1.shift()) } else { res.pu...原创 2019-03-13 11:25:51 · 142 阅读 · 0 评论 -
快速排序
function quickSort(arr) { var len = arr.length if(len <= 1) return arr var partionIndex = Math.floor(len / 2), temp = arr[partionIndex], left = [], right = [] ...原创 2019-03-13 11:14:23 · 137 阅读 · 0 评论 -
冒泡排序
function bubbleSort(arr) { var len = arr.length for(var i = len - 1; i > 0; i--) { for(var j = 0; j < i; j++) { if(arr[j] < arr[j+1]) { var temp =...原创 2019-03-13 11:08:59 · 132 阅读 · 0 评论 -
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 · 277 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
题目描述:请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多...原创 2019-03-20 17:20:24 · 140 阅读 · 0 评论 -
括号匹配
题目描述:给定一个由()和[ ]组成的字符串,逐个提取出()和 [ ],并且输出来,要求时间复杂度为O(n)。例如:'(([]()[])[])'结果:[ ] ( ) [ ] ( ) [ ] ( )function bracket(str) { let arr = [], len = str.length for(let i = 0; i < le...原创 2019-03-11 20:07:33 · 146 阅读 · 0 评论 -
交换二叉树各节点左右子树
题目描述:交换二叉树中所有节点的左右子树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 · 2081 阅读 · 0 评论 -
实现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 · 3390 阅读 · 0 评论