iterative....reverse

hey guys i havta write an O(n) iterative function which when passed 2 vectors of ints v1 and v2 will return true if v1 is the reverse of v2.

bool isReverse(vector <int> v1, vector <int> v2)
{






}

can ne1 help me
The following code returns true if one of the given vectors is a reverse vector of another. Assuming that n is the size of the vectors, it works in O(n).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

using namespace std;

#include<iostream>
#include<vector>

bool isReverse(vector <int> v1, vector <int> v2)
{
    if(v1.size() != v2.size())
        return false;
        
    int n = v1.size();
    for(int i=0;i < n; i++)
    {
        if(v1.at(i) != v2.at(n-i-1))
            return false;       
    }
    return true;
}
int main()
{
    vector <int> v1, v2, v3;
    
    for(int i=0;i<10;i++)
        v1.push_back(i);
    for(int i=9;i>=0;i--)
        v2.push_back(i);
    for(int i=0;i<10;i++)
        v3.push_back(i*2);
    
    cout<<"IsReverse(v1,v2)? "<<isReverse(v1,v2)<<"\n"
        <<"IsReverse(v1,v3)? "<<isReverse(v1,v3);
    return 0;
}


Using std::equal
1
2
3
4
5
6
7
8
9
10
11
#include <algorithm>
#include <vector>
using std::vector;

bool isReverse(const vector<int>& v1, const vector<int>& v2) 
{
    if (v1.size() != v2.size())
        return false;
    
    return std::equal(v1.begin(), v1.end(), v2.rbegin());
}


Note1: Using "v2.rbegin" as opposed to "v2.begin" makes it compare reversely.
Note2: You SHOULD declare the function arguments like this, with const &, because it can give better performance.
Last edited on
Topic archived. No new replies allowed.