题目1:生成和遍历二叉树

题目描述:

已知有平面坐标系的十组坐标点[[x1,y1], [x2,y2], ……, [x10,y10]],每次找出距离最近的两组坐标进行合并,合并后的坐标取两者平均值,即[(x1+x2)/2 , (y1+y2)/2](如有小数统一向下取整,即2.4取2),合并后的新坐标作为二叉树根节点,原坐标取X值较小的作为左节点,另一个为右节点,假设第一次计算后得出[x1,y1], [x2,y2]距离最近,且x1<x2,则构成如下二叉树:

         [(x1+x2)/2, (y1+y2)/2]/   \/     \[x1, y1]    [x2, y2]       [x3, y3] [x4, y4]  ……[x10, y10]

合并后的新坐标和余下没有在二叉树中的原始坐标构成新数组[[(x1+x2)/2, (y1+y2)/2], [x3,y3],[x4, y4] ……, [x10,y10]]继续重复上述步骤,直至二叉树构建完成,最后按前序优先输出二叉树的数组,假设只有3组坐标的话,可能的一种二叉树场景为:

              [(((x1+x2)/2)+x3]/2, (((y1+y2)/2)+y3]/2]/                  \/                      \[(x1+x2)/2, (y1+y2)/2]      [x3,y3]/         \/           \[x1, y1]    [x2, y2]

注:

两点之间距离的平方公式:(x1-x2)²+(y1-y2)²

输入描述

表示平面坐标系中坐标点的二维数组,如int a[10][2]

输出描述

前序遍历后的二叉树数据

样例输入

[[5,10], [3,15], [10,18]]

样例输出

7,15

4,12

3,15

5,10

10,18

解题思路:(AC 25%)

var arr = [[5, 10],// [3, 15],// [10, 18],
];
var root = null;
function Node(value) {this.value = value;this.left = null;this.right = null;
}
// 计算距离最近的两个点,添加两种的中点,删除原来的点
function oneHandle(arr, node) {// console.log("***");var min = Infinity;var newItem = [];var delete1 = 0;var delete2 = 0;for (var i = 0; i < arr.length; i++) {for (var j = i + 1; j < arr.length; j++) {var dis =Math.pow(arr[i][0] - arr[j][0], 2) + Math.pow(arr[i][1] - arr[j][1], 2);// console.log(dis);if (dis < min) {min = dis;newItem.push(Math.floor((arr[i][0] + arr[j][0]) / 2));newItem.push(Math.floor((arr[i][1] + arr[j][1]) / 2));delete1 = i;delete2 = j;}}}var newNode = new Node(newItem);if (!node) {if (arr[delete1][0] < arr[delete2][0]) {newNode.left = new Node(arr[delete1]);newNode.right = new Node(arr[delete2]);} else {newNode.left = new Node(arr[delete2]);newNode.right = new Node(arr[delete1]);}} else {if (node.value[0] == arr[delete1][0]) {if (arr[delete1][0] < arr[delete2][0]) {newNode.left = node;newNode.right = new Node(arr[delete2]);} else {newNode.left = new Node(arr[delete2]);newNode.right = node;}} else {if (arr[delete1][0] < arr[delete2][0]) {newNode.left = new Node(arr[delete1]);newNode.right = node;} else {newNode.left = node;newNode.right = new Node(arr[delete1]);}}}root = newNode;arr.splice(delete2, 1);arr.splice(delete1, 1);arr.push(newItem);// console.log(root);// console.log(arr);
}function handle() {if (arr.length == 1) {root = new Node(arr[0]);}while (arr.length > 1) {oneHandle(arr, root);// console.log(arr);}
}
handle();
// console.log(root);
function traverse(node) {if (!node) return null;console.log(node.value.toString());traverse(node.left);traverse(node.right);
}
traverse(root);

题目2:数组排序+栈

题目描述:

输入一个数组,排除掉非数字类型和负数的元素后,对数组中剩余的元素进行排列组合,求出组合后的最大数值。

输入描述

输入一个数组数组

输出描述

输出这个数组排列的最大值

样例输入

[1,0,2,3]

样例输出

3210

解题思路:(AC 60%)

// var arr = [1, 0, 2, 3, -22, "aa", { name: "99" }, [12, 3]];
var arr = [1];
arr = arr.filter((item) => {return item >= 0 && typeof item == "number" && !Number.isNaN(item);
});
arr.sort((a, b) => a - b);
console.log(arr);
var str = "";
while (arr.length > 0) {str += arr.pop();
}
console.log(str);

题目3:

题目描述:

携程为庆祝中秋节,举办了中秋晚会,在晚会活动中有一个词语对对碰环节。该环节要求参赛选手两两组队,每队由其中一人A提出词型,另外一人B根据词型给出相匹配的答案,匹配成功进入下一轮。

请帮助主办方设计一个算法识别B给出的答案是否能够匹配A提出的词型。

**要求:**答案只能是纯英文字母,不同单词间以空格分隔,如果输入的内容中含有数字、中文或特殊符号等,直接返回-1。已知判定字符串是否是纯英文字母或空格的正则为:"1+$"

输入描述

输入数据,两个单词之间以空格分隔,举例:

A提出:ABAC词型 B回答:jin sheng jin shi(ABAC),B回答正确,输出1

A提出:ABCD词型 B回答:xiao xin yi yi(ABCC),B回答错误,输出0

A提出:AABC词型 B回答:人 人 you ze(有中文),B回答错误,输出-1

输出描述

回答正确输出1,回答错误输出0,程序异常或回答中有非英文内容,输出-1

样例输入

ABAC

jin sheng jin shi

样例输出

1

解题思路:(AC60%)

var str = "ABAC";
var answer = "人 人 you ze";
function handle(str) {if (!/^[A-Za-z ]+$/.test(str)) {// console.log(-1);return;}var questionObj = {};for (var i = 0; i < str.length; i++) {if (questionObj[str[i]]) {questionObj[str[i]].push(i);} else {questionObj[str[i]] = [];questionObj[str[i]].push(i);}}var arr = answer.split(" ");var answerObj = {};for (var i = 0; i < arr.length; i++) {if (answerObj[arr[i]]) {answerObj[arr[i]].push(i);} else {answerObj[arr[i]] = [];answerObj[arr[i]].push(i);}}// console.log(questionObj);// console.log(answerObj);var tag = 0;var arr1 = [];var arr2 = [];for (var i in questionObj) {arr1.push(questionObj[i]);}for (var i in answerObj) {arr2.push(answerObj[i]);}return arr1.toString() == arr2.toString() ? 1 : 0;
}
var rs = handle(str);
console.log(rs);

  1. A-Za-z ↩︎

2020携程旅游前端笔试题相关推荐

  1. 携程产品经理笔试题-2020秋招

    题型:20道英文选择题+2道简答题 选择题部分主要考察的数量关系.材料分析和语言理解,跟行测差不多,但是我没想到是全是英文的,天哪,太久没看英文字母了,看得让我很跳跃,显然基本凉凉了... 简答题1: ...

  2. 小红书2020校招前端笔试题卷三

    小红书2020校招前端笔试题卷三题目地址 第一题 第一题我做错了以为是选错误的 第二题 第三题 解: JS中的执行机制(setTimeout.setInterval.promise.宏任务.微任务), ...

  3. 携程android开发面试题,2017携程笔试题目

    携程是我国著名的旅游为主的网站,想进入携程工作吗?小编为大家整理了2017携程笔试题目,欢迎阅读参考! 2017携程Web前端实习生招聘笔试题 考察encodeURI encodeURI(), dec ...

  4. 2020携程“BOSS直播”大数据发布:GMV累计超11亿

    今日,2020携程"BOSS直播"大数据报告(以下简称<报告>)正式对外发布.<报告>结合大量最新披露的数据,从携程直播体系的整体情况.用户特征.核心(直播 ...

  5. 干货 | 携程机票前端安卓虚拟机测试集群建设实践

    作者简介 Liang,携程研发总监,关注DevOps,前端&服务端质量保障.能效提升: Tony,携程资深测试经理,关注自动化测试框架及平台类工具开发. 一.背景 在携程内部业务高频率敏捷迭代 ...

  6. 前端笔试题面试题记录(上)

    前言 过完元宵,就到上海找了波工作,现在已经入职好了,蹭波热点,写一波面试记录,内容包含笔试题和面试题,还有一些没有写进来,准备再开一篇,许久没写了,写的确实有些慢.如果喜欢的话可以点波赞,或者关注一 ...

  7. 也许你需要点实用的-Web前端笔试题

    之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...

  8. 前端笔试题小结(一)

    前端笔试题小结(一) 2020-03-13 题目一: 将一个js数组去重. 样例: 输入:[ 1, "apple", 3, "a", 3, 1, 5, 6, & ...

  9. 前端笔试题面试题记录(下)

    前言 接上篇前端笔试题面试题记录(上).趁清明小长假,把上篇剩下的部分也写一下,因为最近比较忙这篇已经拖了很久了.现在刚刚开始银四了,应该还是有些小伙伴在找工作,时间还不算太晚,希望本篇可以帮到这些小 ...

最新文章

  1. 网络规划与设计讨论会(第3期)
  2. 第七周实践项目3 负数把正数赶出队列
  3. Ubuntu20.04开机界面(boot animation)改成Windows95
  4. memcpy/memset函数的c语言实现
  5. Java中BigDecimal类介绍及用法
  6. 优秀!303篇论文获2020年度“优秀博士学位论文”!
  7. 本田2022年新车将搭载谷歌Automotive OS
  8. 外媒:日本和芬兰将合作开发6G技术 诺基亚将参与其中
  9. android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?
  10. VB键码常数(速查)
  11. Android Studio 智能感知无效
  12. 3.微服务设计 --- 如何建模服务
  13. linux下688权限,Linux shell脚本笔记
  14. 文件系统以及硬盘分区概念
  15. 小米4C官方/第三方ROM下载
  16. Rasa开发使用 Rasa_NLU及Rasa_Core模型训练与测试
  17. ROOT(a Data analysis Framework)-Note4: iSTEP day1-TH1TF1
  18. pika rabbitmq ssl
  19. v-rep仿真之键盘控制机械臂末端移动
  20. 2019 沉淀-留言-成长的小白菜

热门文章

  1. Mac mini 运行外接移动硬盘中的windows后的遗留问题
  2. 被动和主动网络攻击类型
  3. 移动端原型设计的最佳分辨率 375×667
  4. 【干货】什么是手绘风格的次世代游戏制作
  5. Android手机状态栏通知(Notification)的功能与用法
  6. linux初探——linux怎么将一个文件移动到另一个目录下
  7. 安装配置无线 SONOS HIFI 系统 (完整版)
  8. Jbd2:Hadoop
  9. mac adb 找不到设备
  10. Maven常见操作命令