Time out error for program "Find missing and repeating number"

Viewed 22

Practicing a program called Find missing and repeating number.

Input: 3

   3 1 3

Output: 3 2

Repeating number should be first then missing number.

Only one test case failed due to time out error on hackerrank.

Code shown below, can someone please identify what is the mistake? Thanks in advance

int i=0;
        int n = arr.size();
        while(i<n){
             if(arr.get(i)==i+1||arr.get(arr.get(i)-1)==arr.get(i)){
                 i++;
             }else{
                 int j=arr.get(i)-1;
                 int temp=arr.get(j);
                 arr.set(arr.get(j),arr.get(i));
                 arr.get(i)=temp;
             }
         }
         int ans[]=new int[2];
         for(i=0;i<n;i++){
             if(arr[i]!=i+1){
                 ans[0]=arr[i];
                 ans[1]=i+1;
                 break;
             }
         }
         return ans;
}
0 Answers
Related