• 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. Java 二进制,八进制,十进制,十六进制
  2. man nfsd(rpc.nfsd中文手册)
  3. Netty学习笔记(一)
  4. 轻松清理系统垃圾[转]
  5. MySQL 同步(三)不同版本问题
  6. python读取大文件的某行_Python按行读取文件的实现方法【小文件和大文件读取】...
  7. .NET/C# 获取一个正在运行的进程的命令行参数
  8. 联信高效的数据传输机制
  9. HDU 4857 逃生 【拓扑排序+反向建图+优先队列】
  10. python设计模式六大原则_学习设计模式 - 六大基本原则之迪米特法则(示例代码)...
  11. json解析时遇到英文双引号报错解决
  12. NOIP模拟 位运算(trie树+按位贪心)
  13. Vue Router4路由
  14. excel文件运行报错(xx.xlsx)不是有效的win32应用程序
  15. 【※taskmgr.exe进程知识详解※电脑知识】
  16. 软件测试职位概要,系统测试工程师职位描述
  17. springboot快速搭建ftpserver服务端
  18. R语言学习笔记之str函数
  19. Skimage图像处理教程2)色彩空间变换
  20. JDK 8 JVM性能优化

热门文章

  1. python爬取今日头条手机app广告_Scrapy抓手机App数据(今日头条)
  2. Nickel200/NO2200化学成分
  3. 【小程序云开发挑战赛】长大寻物-明远队作品说明书
  4. 常见的网页错误编码以及解决的方法
  5. 招商银行个人银行专业版最新 6.0.2.6 版 已经发布
  6. 【软考系统架构设计师】2013年下系统架构师综合知识历年真题
  7. 十一回老家买不到票,最后被黄牛套路
  8. PHP新浪面试题及完整答案
  9. C++ Test单元测试工具
  10. 浅析金融科技如何赋能供应链金融?