1、一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。
//indexOf()和lastIndexOf()这两个位置方法,indexOf()从头开始向后查找,并返回查找元素的位置,若没有
//则返回-1,lastIndexOf()从后往前查找,同样返回查找元素在数组中的位置。
function FindNumsAppearOnce(array)
{
var len = array.length;
var list = [];
for(var i=0;i<len;i++){
if(array.indexOf(array[i]) == array.lastIndexOf(array[i])){
list.push(array[i]);
}
}
return list;
}
2、输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
//join():把数组中的所有元素放入一个字符串,内可指定连接符,比如:join('#');
//toString():把数字转换为字符串
//parseInt():解析一个字符串,并把其转换为整数
//sort():对数组元素进行排序,并返回排序好的数组。
//如果 compareFunction(a, b) (返回的值)小于0,那么a会被排列到b之前,即参数a,b的顺序保持原样;
//如果 compareFunction(a, b) (返回的值) 等于0,a和b的相对位置不变;
//如果 compareFunction(a, b) (返回的值)大于0,b会被排列到a之前,即交换参数a,b的顺序。
function PrintMinNumber(numers)
{
// write code here
numbers.sort(function(num1,num2){
var a=num1.toString();
var b=num2.toString();
if(parseInt(a+b)>parseInt(b+a)){
return 1;
}else{
return -1;
}
});
return numbers.join('');
}
3、输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
//递归思想
function reConstructBinaryTree(pre, vin)
{
var result = null;
if(pre.length>1){
var root = pre[0];
var vinRootIndex = vin.indexOf(root);
var vinLeft = vin.slice(0,vinRootIndex);
var vinRight = vin.slice(vinRootIndex+1,vin.length);
pre.shift();
var preLeft = pre.slice(0,vinLeft.length);
var preRight = pre.slice(vinLeft.length,pre.length);
result = {
val:root,
left:reConstructBinaryTree(preLeft,vinLeft),
right:reConstructBinaryTree(preRight,vinRight),
}
}else if(pre.length == 1){
result = {
val:pre[0],
left:null,
right:null,
}
}
return result;
}
4、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
//从数组的左下角开始比较查询
function Find(target,array){
let lenX = array.length;
let lenY = array[0].length;
for(let i=lenX-1, j=0; i>=0 && j<lenY;){
if(target > array[i][j]){
j++;
}else if(target < array[i][j]){
i--;
}else{
return true;
}
}
}
5、请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
//使用正则表达式,结合数组的replace方法
function replaceSpace(str)
{
var reg = new RegExp(" ","g");
var newstr = str.replace(reg,"%20");
return newstr;
}
6、输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
//从头到尾依次将链表中的值插入数组中,以反序输出result数组即可
function printListFromTailToHead(head)
{
var result = [];
var n = head;
while(n){
result.push(n.val);
n = n.next;
}
return result.reverse();
}
每日一练,后续积累哦~