• 1、将数的二进制表示中倒数第二个0改为1
  • 2、求出字符串中包含26个字母的子串的最小长度,其中“?”可以代替其中一个字母
  • 3、计算二叉树中距离为k的节点对的数量

1、将数的二进制表示中倒数第二个0改为1

如:10的二进制为1010,将倒数第二个0换为1后变为1110,结果为14

import java.util.ArrayList;
import java.util.List;/*** @author Jefft* @date 2021/8/15 19:38*/
public class Main {public int changeNumber (int num) {// write code here//10进制转为2进制List<Integer> list = new ArrayList<>();while (num != 0) {int i = num % 2;list.add(i);num /= 2;}//倒数第二个0转为1boolean isNum = false;//索引int index = -1;for (int i = 0;i < list.size();i++) {if (0 == list.get(i)) {if (!isNum) {isNum = true;continue;} else {index = i;break;}}}//2进制转10进制int res = 0;for (int i = 0;i < list.size();i++) {if (i == index || 1 == list.get(i)) {int n = 1;for (int j = 1;j <= i;j++) {n *= 2;}res += n;}}return res;}public static void main(String[] args) {Main main = new Main();int i = main.changeNumber(15);System.out.println(i);  //90%}
}

2、求出字符串中包含26个字母的子串的最小长度,其中“?”可以代替其中一个字母

如:
“abcdefghijklmnopqrstuvw???abc”,结果为26
“abcdefghijklmnopqrstuvw?uvw??”,结果为29

import java.util.HashSet;
import java.util.Set;/*** @author Jefft* @date 2021/8/15 19:56*/
public class Main {public int findInterval (String str) {// write code hereint res = -1;boolean hashChange= false;for (int i = 0;i < str.length();i++) {int len = getLen(str, i);if (len != -1) {if (!hashChange) {res = len;hashChange = true;} else {res = Math.min(res, len);}}}return res;}public int getLen(String str, int index) {//Set去重,最后判断长度是否为26Set<Character> set = new HashSet<>();//应该到达的长度为26int len = 26;//从index开始遍历strfor (int i = index;i < str.length();i++) {//遇到?则len = len - 1if ('?' == str.charAt(i)) {len -= 1;} else {set.add(str.charAt(i));}//如果到达则返回if (set.size() == len) {return i - index + 1;}}return -1;}public static void main(String[] args) {Main main = new Main();int acb = main.findInterval("abcdefghijklmnopqrstuvw???abc");System.out.println(acb);}
}

3、计算二叉树中距离为k的节点对的数量

对于上面的树,若令k = 3,则输出2。因为距离为3的节点对只有(4,3)和(5,3)

import java.util.ArrayList;
import java.util.List;/*** @author Jefft* @date 2021/8/15 20:22*/
public class Main {//节点集合static List<List<Integer>> lists = new ArrayList<>();/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root TreeNode类* @param k int整型* @return int整型*/public int leafPairs (TreeNode root, int k) {// write code hereList<Integer> ll = new ArrayList<>();ll.add(-1);lists.add(ll);if (root.left != null) {goNode(root.left, 1, ll);}if (root.right != null) {goNode(root.right, 2, ll);}int res = 0;for (int i = 0;i < lists.size() - 1;i++) {List<Integer> l1 = lists.get(i);int len1 = l1.size();for (int j = 1;j < lists.size();j++) {int curLen = 0;List<Integer> l2 = lists.get(j);int len2 = l2.size();int i1 = 0,i2 = 0;while (i1 < len1 && i2 < len2) {if (l1.get(i1) != l2.get(i2)) {curLen += 2;}i1++;i2++;}//加上剩下的长度if (i1 >= len1) {curLen += len2 - i2;}if (i2 >= len2) {curLen += len1 - i1;}//符合加入if (curLen == k) {res += 1;}}}return res;}/**** @param node* @param leftOrRight 1 left ; 2 right* @param list*/public static void goNode(TreeNode node, int leftOrRight, List<Integer> list) {//创建新的集合List<Integer> nList = new ArrayList<>(list);nList.add(leftOrRight);//将该节点添加到集合中lists.add(nList);//若左右子树不为空,则向下递归if (node.left != null) {goNode(node.left, 1, nList);}if (node.right != null) {goNode(node.right, 2, nList);}}public static void main(String[] args) {TreeNode root = new TreeNode(1);TreeNode root2 = new TreeNode(2);TreeNode root3 = new TreeNode(3);TreeNode root4 = new TreeNode(4);TreeNode root5 = new TreeNode(5);root2.left = root4;root2.right = root5;root.left = root2;root.right = root3;Main main = new Main();int i = main.leafPairs(root, 3);System.out.println(i);}
}class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}
}

科大讯飞 笔试题2021.8.15 Java版相关推荐

  1. 网易游戏互娱 笔试题2021.8.7 Java版

    1.身份证 2.比赛排名 1.身份证 import java.util.HashMap; import java.util.Map; import java.util.Scanner;/*** @au ...

  2. 美团笔试题2021.8.29(第四题求大佬解答)

    美团笔试题2021.8.29 又再帮同学写,推了这周的周赛,侥幸都有点思路 丁香树 题目描述 思路 因为芳香值最大为30,所以用一个数组存储已走过的芳香值,然后走到第i个点,找比当前芳香值小的有多少个 ...

  3. 用友2020校招java笔试题_用友Java类笔试题大全

    如下为大家汇总的是一份用友Java类笔试题,欢迎大家关注! 1.Hashtable和HashMap有什么区别? a.Hashtable是继承自陈旧的Dictionary类的,HashMap继承自Abs ...

  4. 记录一次Java笔试题记录一次Java笔试题

    记录一次Java笔试题 一.下列语句片段,运行结果是 二.这段代码运行结果是多少? 三.Object中有哪些公共方法? 四.java中基本数据类型有哪些? 五.循环中使用break.continue. ...

  5. 南京大学计院夏令营历年机试笔试题汇总(刷题版)

    温馨提示 必须熟悉输入输出,Java中是Scanner scan = new Scanner(System.in);(在Java.util包下) 必须熟悉各类集合框架,如HashMap.ArrayLi ...

  6. js下拉 selenium_selenium 常见面试题以及答案(Java版)

    1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException 这样就可以使用try catch,如 ...

  7. java selenium_selenium 常见面试题以及答案(Java版)

    1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException 这样就可以使用try catch,如 ...

  8. selenium 常见面试题以及答案(Java版)

    1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException 这样就可以使用try catch,如 ...

  9. PAT 乙级 1046. 划拳(15) Java版

    划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒.两人同赢或两人同输 ...

最新文章

  1. 是否能被3,5,7同时整除(3.4)(Java)
  2. JS监听手机物理返回键,返回到指定页面
  3. linux 使用split分割大文件
  4. hdu 1115(多边形重心)
  5. linux环境下中文乱码问题
  6. Elastic:为 Elasticsearch 启动 https 访问使数据访问更安全
  7. 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...
  8. python预测发展趋势_Python中的趋势“预测器”?
  9. 学计算机学的想死,“我不是学习机器,真的好想死”
  10. ASP.NET 3.5核心编程学习笔记(17):基于数据源的数据绑定
  11. 关于NLP相关技术全部在这里:预训练模型、信息抽取、文本生成、知识图谱、对话系统...
  12. matlab知识集锦(3)
  13. PLSQL如何将千万数据快速插入到另一张表中_数据库设计中的 9 大常见错误
  14. Docker设置容器CPU、memory、磁盘IO资源限制
  15. 这才是晕了哟,dos之家上全是graybird???????????
  16. linux wr vi 命令,Linux下Vi命令详解
  17. 结构化随机森林 代码说明
  18. 2020Spatial-Temporal Graph Convolutional Network for Video-based Person Re-identification论文笔记(时空图卷积)
  19. Python爬取拉钩招聘网,用数据告诉你这类程序员最赚钱
  20. mysql 页分裂_[翻译] InnoDB 页合并与页分裂

热门文章

  1. Linux系统管理的基础命令
  2. guitar pro8最新版吉他功能软件使教学
  3. 开源项目也可以申请专利
  4. 找不到老赖本人,法院可以执行其财产吗?
  5. WPF4.0用tablet实现手写输入(更新XP SP3下也能手写输入方法)
  6. 汤姆大叔的深入理解JavaScript读后感一(1——16节)
  7. 算法流程图,教你快速制作算法流程图
  8. 计算机网络综合布线仿真实训室,网络综合布线实训室简介
  9. MIT最新成果:这款能「自我复制」的机器人,从飞机到火箭都能自己造!
  10. 1 Homeplug AV 协议介绍