O(N) Solution in C++


#1
int Solution::candy(vector<int> &A) {
    vector<int > v(A.size(),1), vec(A.size(), 1);
    for(int i=1;i<A.size();i++){
        if(A[i]>A[i-1]){
            v[i]= v[i-1]+1;
        }
    }
    for(int i=A.size()-2;i>=0;i--){
        if(A[i]>A[i+1]){
            vec[i]= vec[i+1]+1;
        }
    }
    int ans = 0;
    for(int i=0;i<v.size();i++){
        ans+=max(v[i], vec[i]);
    }
    return ans;
}

#2

Nice and easy solution