网易互娱笔试!

有大佬来个递增二叉树的java代码吗!

看到很多人都说咖啡的题0%.我贴个咖啡的代码吧
public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  int T = in.nextInt();
  for(int i = 0; i < T; i++) {
   int K = in.nextInt();
   int M = in.nextInt();
   int l = 1;
   int r = 0;
   int count = 0;
   for(int j = 0; j < M; j++) {
    int temp= in.nextInt();
    count ++;
    r = temp - K - 1;
    if(r >= l) {
     count = count + (r - l)/(K + 1) + 1;
    }
    l = temp + K + 1;
   }
   if(l <= 30) {
    count = count + (30 - l)/(K + 1) + 1;
   }
   System.out.println(count);
  }
 }


#网易##笔试题目#
全部评论
小弟的😁 import java.util.HashMap; import java.util.Scanner; public class Main {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         int n = in.nextInt();         for (int i = 0; i < n; i++) {             int nodes = in.nextInt();             HashMap<Integer, Pair> map = new HashMap<>();             int[] depth = new int[nodes];             for (int j = 0; j < nodes; j++) {                 Pair pair = new Pair(in.nextInt(), in.nextInt(), in.nextInt());                 map.put(j, pair);                 update(depth, map, pair.left, j);                 update(depth, map, pair.right, j);             }             int maxDepth = Integer.MIN_VALUE;             for (int j = 0; j < nodes; j++) {                 maxDepth = Math.max(maxDepth, depth[j]);             }             int[] lines = new int[maxDepth + 1];             for (int j = 0; j < nodes; j++) {                 lines[depth[j]] += map.get(j).weight;             }             boolean flag = false;             for (int j = 1; j <= maxDepth; j++) {                 if (lines[j] <= lines[j - 1]) {                     flag = true;                     break;                 }             }             System.out.println(flag ? "NO" : "YES");         }     }     private static void update(int[] depth, HashMap<Integer, Pair> map, int cur, int root) {         if (cur == -1) {             return;         }         depth[cur] = depth[root] + 1;         if (map.containsKey(cur)) {             Pair pair = map.get(cur);             update(depth, map, pair.left, cur);             update(depth, map, pair.right, cur);         }     } } class Pair {     int weight = 0;     int left = -1;     int right = -1;     public Pair(int weight, int left, int right) {         this.weight = weight;         this.left = left;         this.right = right;     } }
点赞 回复 分享
发布于 2019-09-08 14:59
抛一块粗糙的砖,用来引玉 import java.util.*; class TreeNode{     int val;     int left;     int right;     int parent;     public TreeNode(int val, int left, int right){         this.val = val;         this.left = left;         this.right = right;         parent = -1;     } } public class wangyiTwo {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         int count = sc.nextInt();         ArrayList<ArrayList<TreeNode>> datas = new ArrayList<>();         int idnex = 0;         while (idnex < count){             int numCount = sc.nextInt();             ArrayList<TreeNode> a = new ArrayList<>();             for (int i = 0; i < numCount; i ++){                 int va = sc.nextInt();                 int left = sc.nextInt();                 int right = sc.nextInt();                 TreeNode node = new TreeNode(va, left, right);                 a.add(node);             }             datas.add(a);             idnex ++;         }         for (ArrayList<TreeNode> list: datas){             int root = findParent(list);             boolean r = cd(list, root);             String s = r == true ? "YES": "NO";             System.out.println(s);         }     }     public static int findParent(ArrayList<TreeNode> tree){         for (int i = 0; i < tree.size(); i++){             TreeNode node = tree.get(i);             if (node.left != -1){                 tree.get(node.left).parent = i;             }             if (node.right != -1){                 tree.get(node.right).parent = i;             }         }         int root = -1;         for (int i = 0; i < tree.size(); i++){             if (tree.get(i).parent == -1){                 root = i;                 break;             }         }         return root;     }     public static boolean cd(ArrayList<TreeNode> tree, int rootIndex){         if (tree.size() == 0){             return true;         }         int current = 0, next = 0;         ArrayList<TreeNode> sie = new ArrayList<>();         ArrayList<TreeNode> sieN = new ArrayList<>();         sie.add(tree.get(rootIndex));         while (sie.size() != 0){             for (TreeNode node: sie){                 current += node.val;                 if (node.left != -1){                     sieN.add(tree.get(node.left));                 }                 if (node.right != -1){                     sieN.add(tree.get(node.right));                 }             }             if (sieN.size() == 0) break;             for (TreeNode node: sieN){                 next += node.val;             }             if (next <= current){                 return false;             }             next = 0;             current = 0;             sie.clear();             sie.addAll(sieN);             sieN.clear();         }         return true;     } }
点赞 回复 分享
发布于 2019-09-07 22:35
你要的java package 笔试测试; import java.util.*; public class 网易互娱2 {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         while (sc.hasNextInt()) {             int n = sc.nextInt();             for (int i = 0; i < n; i++) {                 boolean falg = true;                 int m = sc.nextInt();                 Map<Integer, ArrayList<Integer>> map = new HashMap<>();                 ArrayList<Integer> arr2 = new ArrayList<>();                 for (int k = 0; k < m; k++)                     arr2.add(k);                 for (int j = 0; j < m; j++) {                     ArrayList<Integer> arr3 = new ArrayList<>();                     arr3.add(sc.nextInt());                     int num1 = sc.nextInt(), num2 = sc.nextInt();                     arr2.remove((Object) num1);                     arr2.remove((Object) num2);                     arr3.add(num1);                     arr3.add(num2);                     map.put(j, arr3);                 }                 int head = arr2.get(0);                 //                 Queue<Integer> q = new LinkedList<>();                 q.add(head);                 int beNum = 1, nextNum = 0;// 前后排的个数                 int beVal = map.get(head).get(0), nextVal = 0;                 while ( ! q.isEmpty() )                  {                     while (beNum > 0)                      {                                                  int num3 = q.poll();                         beNum--;                         for (int u = 1; u <= 2; u++)                          {                             int num4 = map.get(num3).get(u);                             if (num4 != -1)                              {                                 q.offer(num4);                                 nextVal += map.get(num4).get(0);                                 nextNum += 1;                             }                         }                     }                     if (beVal >= nextVal && !q.isEmpty() )                      {                         System.out.println("NO");                         falg = false;                         break;                     }                     beNum = nextNum;                     beVal = nextVal;                     nextNum = 0;                     nextVal = 0;                 }                 if (beNum == 0 && falg )                     System.out.println("YES");             }         }     } }
点赞 回复 分享
发布于 2019-09-07 22:32
#include <iostream> #include <vector> #include <queue> using namespace std; void bfs(vector<vector<int> >& data, vector<int>& sumfloor, vector<bool>& rootflag, int rootnum) { queue<int> myq; myq.push(rootnum); while (!myq.empty()){ int sum = 0; int size = myq.size(); //每层数目 while (size > 0) { int nowindex = myq.front(); myq.pop(); //cout << rootflag[nowindex]; if (rootflag[nowindex] == false) { sum += data[nowindex][0]; } if (data[nowindex][1] != -1) { myq.push(data[nowindex][1]); } if (data[nowindex][2] != -1) { myq.push(data[nowindex][2]); } rootflag[nowindex] = true; size--; } sumfloor.push_back(sum); } } bool IsASD(vector<vector<int> >& data, vector<bool>& rootflag) { //找根节点 int rootnum = 0; for (int i = 0; i < rootflag.size();++i) { if (rootflag[i] == true) { rootnum = i; rootflag[i] = false; break; } } /* for (auto num : rootflag) { cout << num << " "; }*/ vector<int> sumfloor; bfs(data, sumfloor, rootflag, rootnum); int i = 0; while (i < sumfloor.size()-1) { if (sumfloor[i] > sumfloor[i + 1]) { return false; } ++i; } return true; } int main() { int T; cin >> T; for (int i = 0; i < T; ++i) { int N; //节点数 cin >> N; vector<vector<int> > data(N, vector<int>(3,0)); vector<bool> rootflag(N, true); for (int j = 0; j < N; ++j) { cin >> data[j][0] >> data[j][1] >> data[j][2]; if(data[j][1]!=-1) rootflag[data[j][1]] = false; if (data[j][2] != -1) rootflag[data[j][2]] = false; } /* for (auto num : rootflag) { cout << num << " "; }*/ if (IsASD(data, rootflag)) { cout << "YES" << endl; } else { cout << "NO" << endl; } } system("pause"); return 0; }
点赞 回复 分享
发布于 2019-09-07 22:26
#include<iostream> #include<vector> #include<queue> using namespace std; int main() { int T; while (cin >> T) { for (int t = 0; t < T; t++) { int n; cin >> n; vector<pair<int, pair<int, int>>> tree(n); vector<int> inDegree(n); for (int i = 0; i < n; i++) { int val, left, right; cin >> val >> left >> right; tree[i].first = val; tree[i].second.first = left; tree[i].second.second = right; if (left != -1)inDegree[left]++; if (right != -1)inDegree[right]++; } int root; for (int i = 0; i < n; i++) { if (inDegree[i] == 0) { root = i; break; } } queue<int> qu, next; qu.push(root); int pre = 0; int cur = 0; bool flag = true; while (!qu.empty()) { while (!qu.empty()) { int curNode = qu.front(); qu.pop(); cur += tree[curNode].first; if (tree[curNode].second.first != -1)next.push(tree[curNode].second.first); if (tree[curNode].second.second != -1)next.push(tree[curNode].second.second); } if (pre >= cur) { flag = false; break; } pre = cur; cur = 0; qu.swap(next); } if (flag) { cout << "YES" << endl; } else { cout << "NO" << endl; } } } } C++凑活看吧
点赞 回复 分享
发布于 2019-09-07 22:11

相关推荐

评论
1
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务