【编程题目 |200分】找到比自己强的人数【2022 Q2考试题】


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

给定数组[[2,1],[3 2]],每组表示师徒关系,第一个元素是第二个元素的老师,数字代表排名,现在找出比自己强的徒弟。

输入

[[2,1],[3,2]]

输出

[0,1,2]

第一行数据[2,1]表示排名第 2 的员工是排名第 1 员工的导师,后面的数据以此类推。

说明

第一个元素 0 表示成绩排名第一的导师,没有徒弟考试超过他;
第二个元素 1 表示成绩排名第二的导师,有 1 个徒弟成绩超过他
第三个元素 2 表示成绩排名第二的导师,有 2 个徒弟成绩超过他

输入

[[2,1],[3,2]]

输出

[0,1,2]


C++解法一


#include <iostream>
#include <unordered_map>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

void SplitInt(string input, vector<int>& output, char patten) 
{
    string one_word = "";
    int j = 0;
    input += patten;
    for (int i = 0; i < input.size(); i++)
    {
        if (input[i] == patten) {
            one_word = input.substr(j, i - j);
            if (!one_word.empty())
            {
                output.push_back(stoi(one_word));
            }
            one_word = "";
            j = i + 1;
        }
    }
}

void SplitString(string input, vector<string>& output, string pattern) 
{
    string::size_type pos;
    input += pattern;
    for (int i = 0; i < input.size(); i++)
    {
        pos = input.find(pattern, i);
        if (pos < input.size())
        {
            string temp = input.substr(i, pos - i);
            if ((temp != pattern) && (!temp.empty()))
            {
                output.push_back(temp);
            }
            i = pos + pattern.size() - 1;
        }
    }
}

vector<int> FindSomeoneBetterThanMyself(vector <vector<int>> martix) 
{

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

C++解法二


#include<bits/stdc++.h>

using namespace std;

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python


import json

class Node:
    def __init__(self, val):
        self.val = val
        self.students = []

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看