猿辅导笔试8.22,

import java.util.*;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Map<Integer, Integer> m = new HashMap<>();
for (int i = 1; i <= n; i++) {
m.put(i, sc.nextInt());
}
List<Integer> result = new ArrayList<>();
Set<Integer> visited = new HashSet<>();
int level = 0;
while(Math.pow(2, level)<=n){
result.add((int) Math.pow(2, level));
visited.add((int) Math.pow(2, level));
level++;
}
level-=1;
while (level>0){
int start = (int) Math.pow(2, level);
int end = (int) Math.pow(2, level+1)-1;
for (int i = start; i <= end && i<=n; i++) {
if (i == end){
result.add(i);
visited.add(i);
continue;
}
if (!visited.contains(i) && !visited.contains(2*i) && !visited.contains(2*i+1)){
result.add(i);
visited.add(i);
}
}
level--;
}
List<Integer> realResult = new ArrayList<>();
for (int index:result){
realResult.add(m.get(index));
}
for (int i = 0; i < realResult.size(); i++) {
System.out.print(realResult.get(i));
if (i!=realResult.size()-1){
System.out.print(" ");
}
}
}

}

第一题
本地测试没问题,提交上去一直报ac 0%,啥子问题,有点郁闷
#猿辅导##笔试题型#
全部评论
同问😓
点赞 回复 分享
发布于 2020-08-22 20:32
我也是这个情况,本地试了好几种用例都没有问题,提交就0%
点赞 回复 分享
发布于 2020-08-22 20:32
牛友们帮帮忙看看我代码有啥问题啊
点赞 回复 分享
发布于 2020-08-22 20:33
第二题也是
点赞 回复 分享
发布于 2020-08-22 20:33
加一自闭
点赞 回复 分享
发布于 2020-08-22 20:33
仔细考虑完全二叉树的最后一层和倒数第二层,以及是否为满二叉树
点赞 回复 分享
发布于 2020-08-22 20:34
最后换行符?
点赞 回复 分享
发布于 2020-08-22 20:34
第一题一直0ac,调了半天过了0.45,难受
点赞 回复 分享
发布于 2020-08-22 20:34
有老哥知道第二题是哪个原题么
点赞 回复 分享
发布于 2020-08-22 20:35
我第一次没考虑倒数第二层的叶子,考虑后,就通过了
点赞 回复 分享
发布于 2020-08-22 20:41
第一题AC,评论有字数限制,我分两条发 import java.util.ArrayList; import java.util.Scanner; public class YuanFuDao01 {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int N = scanner.nextInt();         if (N <= 0) {             return;         }         int []arr = new int[N];         for (int i = 0; i < N; i++) {             arr[i] = scanner.nextInt();         }         int index = 0;         ArrayList<Integer> arrayList = new ArrayList<>();         arrayList.add(arr[index]);         while (index*2+1 <= N-1) {             index = index*2+1;             arrayList.add(arr[index]);         }         int temp = index-1;         while (index < N-1) {             index++;             arrayList.add(arr[index]);         }
点赞 回复 分享
发布于 2020-08-22 20:58
 int x = 0;         if ((N-1)%2 == 1) {             x = (N-2)/2;         }else {             x = (N-3)/2;         }         for (int i = x+1; i <= temp ; i++) {             arrayList.add(arr[i]);         }         while (temp != 2) {             temp = (temp-2)/2;             arrayList.add(arr[temp]);         }         for (int i = 0; i < arrayList.size(); i++) {             System.out.print(arrayList.get(i) + " ");         }     } }
点赞 回复 分享
发布于 2020-08-22 20:58
你怎么还在做笔试呀
点赞 回复 分享
发布于 2020-08-27 10:35

相关推荐

小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务