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

题目描述:

小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。算法复杂度要求不高于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;
}
相关推荐
AI科技星3 分钟前
统一场论变化的引力场产生电磁场推导与物理诠释
服务器·人工智能·科技·线性代数·算法·重构·生活
myloveasuka4 分钟前
int类型的取值范围(为什么负数比正数表示的范围多一位)
c语言·c++
杰克逊的日记5 分钟前
规控算法(规划 + 控制算法)
大数据·算法·云计算·it
玉树临风ives6 分钟前
atcoder ABC439 题解
c++·算法
程序员zgh9 分钟前
类AI技巧 —— 文字描述+draw.io 自动生成图表
c语言·c++·ai作画·流程图·ai编程·甘特图·draw.io
这周也會开心12 分钟前
JVM-垃圾回收算法
jvm·算法
学编程就要猛14 分钟前
算法:4.长度最小的子数组
算法
红豆诗人23 分钟前
算法和数据结构--时间复杂度和空间复杂度
数据结构·算法
阿豪只会阿巴25 分钟前
【多喝热水系列】从零开始的ROS2之旅——Day5
c++·笔记·python·ubuntu·ros2
郑泰科技26 分钟前
fmm(快速地图匹配)实践:Boost header not found解决方案
c++·windows·交通物流