经典算法
排序
背包问题
普通算法
题目1:找出重复元素
数字 1~1000 放在含有 1001 个元素的数组中,其中只有唯一的一个元素值重复,其他数字均只出现一次。设计一个算法,将重复元素找出来,要求每个数组元素只能访问一次。
解答:根据异或运算的性质可知,当相同元素异或时,其运算结果为0;当相异元素异或时,其运算结果为非0;任何数与0进行异或运算,其运算结果为该数。本题中,正好可以使用到此方法,即将数组里的元素逐一进行异或运算,得到的值再与数字1,2,3,…,N进行异或运算,得到的最终结果即为所求的重复元素。
以数组[1,3,4,2,5,3]为例,(1^3^4^2^5^3)^(1^2^3^4^5) = (1^1)^(2^2)^(3^3^3)^(4^4)^(5^5) = 3
代码如下:
1 | function findDup (arr) { |
题目2:数组最大最小值
给定数组[a1,a2,a3,…,an],要求找出数组中的最大和最小值。假设数组中的值各不相同
解答:
1 | // array 是数组[a1,a2,a3,…,an] |
题目3:洗牌函数
1 | // 获取一个在[min, max]的整数 |
题目4:数组扁平化
有一个数组,其值为 [1,[2,[3,4,2],2],5,[6]] ,如何才能输出 [1,2,3,4,2,2,5,6] ?
1 | const arr = [1,[2,[3,4,2],2],5,[6]] |
题目4:创建递增数组
不用循环语句(for while等)来创建一个长度为n的数组,每个元素的值等于它的索引
解答:代码如下:
1 | // 方法一: |
数据结构
链表
1 | // 链表结点 |
栈和队列
在 JavaScript 中,栈和队列可以用数组去表示。
1 | var arr = [1,2,3,4,5] |
二叉树
我这里有另外一篇介绍是链表二叉树的文章(https://www.ionluo.cn/blog/posts/6121effd.html)
1 | // 二叉树的结点 |
图
1 |
本文链接: http://www.ionluo.cn/blog/posts/8b6308d0.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!