TLE. Seems like O(n). Can you tell the time complexity?


#1
ListNode* Solution::partition(ListNode* A, int B) {
    int flag=0, flag2=0;
    ListNode *ref, *tempA=A, *l;
    if(tempA->val >=B && flag2==0){
        ref=tempA;
        flag2=1;
    }
    while(tempA){
        if(tempA->val<B){
            if(flag){
                l->next=tempA->next;
                tempA->next=ref->next;
                ref->next=tempA;
                ref=tempA;
            }
            else if(flag==0 && flag2==0){
                ref=tempA;
                flag=1;
                flag2==1;
            }
            else if(flag==0 && flag2==1){
                l->next=tempA->next;
                tempA->next=ref;
                ref=tempA;
                A=tempA;
                flag=1;
            }
        }
     
        l=tempA;
        tempA=tempA->next;
    }
    return A;
}

#2

try not using else if in while loop