华为机考真题 -- 小明找位置

题目描述:

小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。算法复杂度要求不高于nLog(n);学号为整数类型,队列规模<=10000;

输入描述:

1、第一行:输入已排成队列的小朋友的学号(正整数),以","隔开;例如:93 95 97 100 102 123 155

2、第二行:小明学号,如 110;

输出描述:

输出一个数字,代表队列位置(从 1 开始)。

例如:6

示例 1:

输入

93 95 97 100 102 123 155

110

输出

6

C++源码:

cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <sstream>
using namespace std;

int main() {
    string line;
    getline(cin, line); // 读取第一行的学号序列
    vector<int> queue;

    stringstream ss(line);
    int num;
    while (ss >> num) {
        queue.push_back(num);
        if (ss.peek() == ',') ss.ignore();
    }

    int ming; // 小明的学号
    cin >> ming;

    // 使用二分查找法找到小明的位置
    auto it = lower_bound(queue.begin(), queue.end(), ming);
    int position = it - queue.begin() + 1; // 计算队列位置(从1开始)

    cout << position << endl;

    system("pause");
    return 0;
}
相关推荐
青岛少儿编程-王老师几秒前
CCF编程能力等级认证GESP—C++7级—20251227
开发语言·c++
汉克老师1 分钟前
GESP2025年12月认证C++四级真题与解析(编程题2 (优先购买))
c++·sort·结构体·优先级·gesp4级·gesp四级
我可以将你更新哟3 分钟前
在Ubuntu 22.04上安装C++编译工具
linux·c++·ubuntu
Skrrapper6 分钟前
TCPTP协议是什么?以及Socket使用指南
网络·c++·websocket·计算机网络
爱编程的小吴11 分钟前
【力扣练习题】热题100道【哈希】189. 轮转数组
算法·leetcode·哈希算法
咔咔咔的11 分钟前
840. 矩阵中的幻方
c++
wjykp12 分钟前
105~108SVMf
算法
星火开发设计17 分钟前
栈的深度解析与C++实现
开发语言·数据结构·c++·学习·知识
再睡一夏就好19 分钟前
LInux线程池实战:单例模式设计与多线程安全解析
linux·运维·服务器·开发语言·javascript·c++·ecmascript
我家大宝最可爱21 分钟前
windows搭建agent环境
c++·chatgpt