# 算法

算法

# 合并二维有序数组成一维有序数组,归并排序的思路

# 多种方式实现斐波那契数列

# 字符串出现的不重复最长长度

# 有一堆整数,请把他们分成三份,确保每一份和尽量相等(11,42,23,4,5,6 4 5 6 11 23 42 56 78 90)

# 输入一条 polyline,输出 polyline 的中点

算法:输入一条 polyline,输出 polyline 的中点 绘制:在浏览器中绘制出 polyline 和中点 说明:中点是指沿着 polyline,到 polyline 的起点和终点,距离相等,中点要求在 polyline 上 输入:[[10, 20], [20, 200], [30, 220], [40, 300], [100, 400]],以[10, 20]举例,10 代表 x 坐标,20 代表 y 坐标,单位是像素 要求:提供源代码,用原生 JavaScript 实现,不使用任何框架、类库、构建工具,本地打开 html 文件可直接看到效果

# 单向链表实现队列

# 将给定的数组从顶级分类递归查找子分类,最终构建一个树状数组

数组:[{id:1, parentId: 0}, {id:2, parentId:1},{id:3, parentId:1}] 输出结果:[{id:1, parentId: 0,children:[{id:2, parentId:1},{id:3, parentId:1}]}] 说明:parentId 为 0 的是根节点

# 实现一个将 52 张牌随机均等的分给四个人,比如输入 [0,1,2,3....51] ,输出[[1,2,16...],[4,3,6..],[....],[....]]

# 按要求实现 rightView 函数

function TreeNode(val){
  this.val = val;
  this.left = null;
  this.right = null;
}
function rightView(root){
  // 请你实现
}
// => [1,4,3]
     1      => 1
   2   4    => 4
 7   3      => 3
1
2
3
4
5
6
7
8
9
10
11
12

# 二叉树序列化反序列化

# 输入一个数字,找到对应的字母

如输入1 返回a
输入26返回z
输入27返回aa
输入28返回ab
输入53返回aaa

# 给一个字符串比如'abca',返回第一个不重复的字母

# 给定⼀个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效.

有效字符串需满⾜: 1. 左括号必须⽤相同类型的右括号闭合。 2. 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输⼊: "()" 输出: true 示例 2: 输⼊: "()[]{}" 输出: true 示例 3: 输⼊: "(]" 输出: false 示例 4: 输⼊: "([)]" 输出: false 示例 5: 输⼊: "{[]}" 输出: true

# 手动实现一个函数,给定一个数组[1,0,2,3,4,-1,-3],输出任意两个值和为 0 的下标

# 介绍排序算法和快排原理

# 一个人每次只能走一层楼梯或者两层楼梯,问走到第 80 层楼梯一共有多少种方法

# 给定一个数组,形如 [1, 1, 2 , 3, 3, 3, 3, 4, 6, 6],给定一个数 n,例如 3,找出给定的数 n 在数组内出现的次数,要求时间复杂度小于 O(n)

# 现在有随机整数数组,例如[2,11,20,160,3,1...],请挑出数组内,三个随机整数和为 100 的所有数据。

# 统计一组整形数组的最大差值?

# 介绍冒泡排序、选择排序,说说冒泡排序如何优化

# 如何判断链表是否有环

# 介绍二叉搜索树的特点

# 手写数组去重函数(至少三种以上,说明时间复杂度)

# 找到前 K 个最大的元素

# 介绍下 DFS 深度优先

# 递归公式的时间复杂度为?(单选题)

A.O(n) B.O(logn) C.O(nlogn) D.O(n2)

# 用 JavaScript 实现一个标准的排序算法(快排、冒泡、选择排序),对某个数字数组进行由低到高的排序。

# 找出“aaaabbcccdddd”字符串中出现最多的字母?

# 求 n 以内的所有素数,并说明时间复杂度

# 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点

# 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和

# 根据传入参数 n(数字)对一维数组(纯数字)按照距离 n 最近的顺序排序。(距离即数字与 n 的差值的绝对值)

var arr = [7, 28, -1, 0, 7, 33]
function sort(n) {
  // your code
}
1
2
3
4

# 找出两个数组的交集元素

# 输入一个整数,输出该数二进制表示中 1 的个数

# ⽤ js 实现随机选取 10–100 之间的 10 个且不重复的数字,存⼊⼀个数组,还要排序

# 请用算法实现,从给定的无序、不重复的数组 data 中,取出 n 个数,使其相加和为 sum。并给出算法的时间/空间复杂度。(不需要找到所有的解,找到一个解即可)

# 给定⼀个⼤⼩为 n 的数组,找到其中的众数。众数是指在数组中出现次数⼤于 ⌊⌊ n/2 ⌋⌋ 的元素

最近更新时间: 11/7/2020, 9:48:41 PM