0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

軽微なミスの記録(備忘録)

Posted at

ちょっとしたミス(備忘録)

自己紹介

  • 所属

九州工業大学情報工学部

  • ハンドルネーム

buridaikon

解いた問題

今回のミス

 関数のパラメータとして整数型配列を渡すときにポインタを使って参照していなかったことで、実行時間が余計に長くなっていた。(関数に渡すとき、毎回配列のコピーを行ってしまっていた)

提出したコード

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

int result(int left, int right, vector<int> sum)
{
    int result_num = sum[right] - sum[left-1];
    return result_num;
}

int main()
{

    int n, k;
    cin >> n >> k;

    vector<int> vec(n);

    for (int i = 0; i < n; i++)
    {
        cin >> vec[i];
    }

    vector<int> sum(n + 1, 0);

    for (int i = 0; i < n; i++)
    {
        sum[i + 1] = sum[i] + vec[i];
    }

    for (int i = 0; i < k; i++)
    {
        int left, right;
        cin >> left >> right;
        cout << result(left, right, sum) << endl;
    }
    return 0;
}

修正後のコード

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

int result(int left, int right, vector<int> &sum)
{
    int result_num = sum[right] - sum[left-1];
    return result_num;
}

int main()
{

    int n, k;
    cin >> n >> k;

    vector<int> vec(n);

    for (int i = 0; i < n; i++)
    {
        cin >> vec[i];
    }

    vector<int> sum(n + 1, 0);

    for (int i = 0; i < n; i++)
    {
        sum[i + 1] = sum[i] + vec[i];
    }

    for (int i = 0; i < k; i++)
    {
        int left, right;
        cin >> left >> right;
        cout << result(left, right, sum) << endl;
    }
    return 0;
}

修正箇所

- int result(int left, int right, vector<int> sum)
+ int result(int left, int right, vector<int> &sum)

実行時間への効果

before
image.png

after
image.png

 写真より、修正前と修正後で大きく計算量に差があると分かる。少し気を付けるだけでも計算量を少なくできる。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?