1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
var array = [
[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7],
[4, 5, 6, 7, 8],
[5, 6, 7, 8, 9]
]
function Find(array,num){
for (var i = 0;i<array.length;i++){
for(var j = 0;j<array[0].length;j++)
if(array[i][j] == num){
return true
}
}
return false
}
2.请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
function Replace(string){
var result = string.replace(/\s/g,,'%20')
return result
}
3.输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function printListFromTailToHead(head) {
const res = [];
let pNode = head;// 把指针指向头部,从头往后的顺序
while (pNode !== null) {
res.unshift(pNode.val);
pNode = pNode.next;
}
return res;
}
4. 重建二叉树----输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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;
this.right = null;
} */
function reConstructBinaryTree(pre, vin)
// pre前序遍历的序列
//vin中序遍历的序列
{
// write code here
if(pre.length==0|| vin.length==0)
return null
// 前序第一个是根节点,也是中序左右子树的分割点
// 前序遍历 根左右,中序遍历 左根右,后序遍历 左右根
var index = vin.indexOf(pre[0]) //根结点在中序遍历中的索引
var left = vin.slice(0,index);//左侧的数据
var right=vin.slice(index+1,pre.length);//右侧的数据
return {
val:pre[0], //根节点
// 递归左右子树的前序、中序
left:reConstructBinaryTree(pre.slice(1,index+1),left),
right:reConstructBinaryTree(pre.slice(index+1),right)
}
}
5.用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
const inStack = []
const outStack = []
//1234
//inStack入栈【1234】出队【4321】
//outStack入队【1234】出队【1234】
//outStack出栈相当于1234出队-->1234
//用栈模拟队列,那么出队列相当于用入栈一个一个出栈,将该值放入出栈的序列
function push(node) {
inStack.push(node)
}
function pop() {
if(!outStack.length){ //如果outStack队列里面有值
while(inStack.length){
outStack.push(inStack.pop())
//push pop返回增加删除的那一项值
}
}
return outStack.pop()
}