samedi 27 octobre 2018

What is the difference between the two codes in C++?

I was trying the problem Hash Tables: Ice Cream Parlor on Hackerrank. It is a simple question, but here is the bizzare situation i got to. How does the change of data structure matter? Case 1:

void whatFlavors(vector<int> cost, int money) {
    int ans1,ans2;
    vector<int> arr(100,0);          //notice this
    for(int i=0;i<cost.size();i++){
        if(arr[money-cost[i]]!=0){
            ans1=i+1;ans2=arr[abs(money-cost[i])];
            if(ans1>ans2){
                cout<<ans2<<" "<<ans1<<endl;
            }else{
                cout<<ans2<<" "<<ans1<<endl;
            }
            break;
        }
        else{
            arr[cost[i]]=i+1;
        }
    }
}

And output is: enter image description here

Case 2: code:

void whatFlavors(vector<int> cost, int money) {
    int arr[100]={0}; //notice this
    int ans1,ans2;
    for(int i=0;i<cost.size();i++){
        if(arr[money-cost[i]]!=0){
            ans1=i+1;ans2=arr[abs(money-cost[i])];
            if(ans1>ans2){
                cout<<ans2<<" "<<ans1<<endl;
            }else{
                cout<<ans2<<" "<<ans1<<endl;
            }
            break;
        }
        else{
            arr[cost[i]]=i+1;
        }
    }

}

output: enter image description here

Aucun commentaire:

Enregistrer un commentaire