为什么我把变量类型设置成long后会时间超限?

为什么我把变量类型设置成long后会时间超限?不设置成long又通不过第27个例子
刚开始刷题但是碰到时间超限的问题总在多数想问问可能有哪些原因。

img

int bestClosingTime(char * customers){
    int n=strlen(customers);
    long min=10000;
    int k,j,x=0;
    for(int i=0;i<=n;i++){
        j=0;k=0;
        while(1){
            if(j==n||k>=min) break;
            if(j'N') k++;
            else if(j>=i&&customers[j]=='Y')  k++; 
            j++;
        }
        if(kmin=k;
            x=i;
        } 
    }
    return x;
}

写出来了,看了一下大佬的思路,自己用C试着写了一下( •̀ ω •́ )y
写的时候浅浅想了一下,可能是算法不太好循环太多次了才出现时间超限,虽然还是不知道为什么改了类型long之后也会时间超限
(每次都会忘记题目最后是会写customers.length的长度的,10^5,不需要用long类型)
但是感觉我还没理解透,这道题肯定还有更简单的思路

img

#define N 100001
int bestClosingTime(char * customers){
    int n=strlen(customers);
    int num[N]={0};
    int k=0,m=0,min=100001,x=0,i=0;
    //当前目的应该是先求出i时刻的'Y'的个数--数组
    for(;i<=n;i++){
        num[i]=k;
        if(customers[i]=='Y'&&i<n) k++;    
    }
    //分析使用
    for(int j=0;j<=n;j++){
        m=(j-num[j])+num[n]-num[j];
        if(m<min){
            min=m;
            x=j;
        }
    }
    return x;
}