专栏首页深度学习和计算机视觉每日一题(合并表格)

每日一题(合并表格)

编程是很多偏计算机、人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用。因此小白决定开辟一个新的板块“每日一题”,通过每天一道编程题目来强化和锻炼自己的编程能力(最起码不会忘记编程)

特别说明:编程题来自“牛客网”和“领扣”以及热心小伙伴的题目。由于小白有时想锻炼某一类编程方法,所以提供的代码不一定是最优解,但是本文提供的编程代码均为通过测试代码。

合并表格

题目描述

数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

输入描述

先输入键值对的个数 然后输入成对的index和value值,以空格隔开

输出描述

输出合并后的键值对(多行)

示例1

输入

4

0 1

0 2

1 2

3 4

输出

0 3

1 2

3 4

解析

本题是记录表包含索引和数值,正好符合map关联容器的性质。因此使用关联容器是一个很好的选择。但是本题由于索引和数值都是整数类型,因此也可以用数组来实现记录表的合并,就是数组的大小取消提前考虑一下。这里小白只提供了map关联容器的实现方式。

在编程的过程中小白出现了在for循环后面添加“;”的问题,导致调试了很久,希望小伙伴们以后可以引以为戒。错误提示是:vector iterator not dereferencable,小伙伴以后自己编程的时候遇到了也可看一下是不是同样的错误。

代码

#include <iostream>
#include <map>
#include <vector>

using namespace std;

class Solution
{
public:
  Solution();
  Solution(vector<int> ind, vector<int> val) :index(ind), value(val){};
  map<int,int> GetTogether()
  {
    map<int, int> result;
    vector<int>::iterator n = value.begin();
    vector<int>::iterator m = index.begin();
    for ( ;m != index.end(); m++,n++)
    {
      result[*m] = result[*m] + *n;
    }
    return result;
  }
  vector<int> index;
  vector<int> value;
private:

};

int main()
{
  vector<int> index;
  vector<int> value;
  map<int, int> result;
  int i;
  cin >> i;
  for ( int n = 0 ; n < i; n++)
  {
    int index_, value_;
    cin >> index_ >> value_;
    index.push_back(index_);
    value.push_back(value_);
  }
  Solution solution(index, value);
  result = solution.GetTogether();
  for (auto m = result.cbegin(); m!= result.cend(); m++)
  {
    cout << m->first << " " << m->second << endl;
  }
  return 0;
}

运行结果

本文分享自微信公众号 - 小白学视觉(NoobCV),作者:小白学视觉

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 每日一题C++版(袋鼠过河)

    编程是很多偏计算机、人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用。因此小白决定开辟一个新的板块“每日一题”,通过每天一道编程题目来强化...

    小白学视觉
  • 干货 | OpenCV实现边缘模板匹配算法

    OpenCV中自带的模板匹配算法,完全是像素基本的模板匹配,特别容易受到光照影响,光照稍微有所不同,该方法就会歇菜了!搞得很多OpenCV初学者刚学习到该方法时...

    小白学视觉
  • 相机标定黑白格纸生成(提供PDF版下载)

    小白近期对相机进行了标定,关于相机标定的原理和方法网上比较多,讲解也比较详细,这里小白也就不再重复,如果有对原理不是很清晰的小伙伴,可以后台私密我。

    小白学视觉
  • 保护你的Linux系统的九个老生常谈

    在现在这个世道中,保障基于Linux的系统的安全是十分重要的。但是,你得知道怎么干。一个简单反恶意程序软件是远远不够的,你需要采取其它措施来协同工作。那么试试下...

    小小科
  • 保护你的Linux系统的九个老生常谈

    在现在这个世道中,保障基于Linux的系统的安全是十分重要的。但是,你得知道怎么干。一个简单反恶意程序软件是远远不够的,你需要采取其它措施来协同工作。那么试试...

    小小科
  • LeetCode(面试题:二维数组中的查找)

    TrueDei
  • leetcode378. Kth Smallest Element in a Sorted Matrix

    在一个从左到右,从上到下均有序的二维数组中,找到从小到第k个数字,这里需要注意,不要求一定要是唯一的值,即假设存在这样一个序列1,2,2,3,则第三个数字是2而...

    眯眯眼的猫头鹰
  • 【温故知新】概率笔记1——独立事件下的简单概率

      一个硬币有两面,我们都知道,投掷一次硬币,正面朝上的概率是50%;一个骰子有六个数字,投掷一次骰子,每个数字出现的概率均等,都是1/6

    统计学家
  • 基础算法

    0.创建类 BinaryTreeNode 1.创建方法:传入根结点 2.判断根节点是否为空 3.判断左右结点是否同时为空 4.用self调用此方法,将根节点的左...

    用户2491699
  • 求最大字段和的二种算法

    意思暴力法,穷举出各种字段和情况,求出结果,想法通俗易懂,就是效率太低了. package day20180506; public class FileSum ...

    东风冷雪

扫码关注云+社区

领取腾讯云代金券