题解 | #合并表记录#

合并表记录

https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

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

int main() {
    int nTest;
    cin >> nTest;

    vector<vector<int>> vecTest(nTest, vector<int> (2, 0));
    for(int i = 0; i < nTest; i++){
        cin >> vecTest[i][0] >> vecTest[i][1];
    }
     // 按列元素排序
    sort(vecTest.begin(), vecTest.end());
     // 合并相同的元素,注意要遍历到倒数第二个元素!!!!!!!
     //注意:vecTest.size()返回的是列数;
     //vecTest.erase(vecTest.begin() + i + 1)删除的是对应的行
    int i = 0;
    while(i < vecTest.size() - 1){
        if(vecTest[i][0] == vecTest[i+1][0]){
            vecTest[i][1] += vecTest[i+1][1];
            vecTest.erase(vecTest.begin() + i + 1);
        }else{
            i++;
        }
    }

    // 输出vector矩阵
    for (const auto& row : vecTest) {
        for (int value : row) {
            cout << value << " ";
        }
        cout << endl;
    }
}


全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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