2025年10月13日 星期一

[1081] Smallest Subsequence of Distinct Characters

感人捏
看完解答(?)以後的一次PASS
某種程度上也算是一種進步(?)
復健之路真漫長QQ
聽說這是跟316. Remove Duplicate Letters 一樣的題目
而撈回去看自己的紀錄,發現 2018跟 2022各寫了一次,
但好像都不知道自己在幹嘛吧哈哈哈哈哈哈哈(奔入雨中)
ps原來2022年是6月寫的,那的確是不知道自己在幹嘛吧哈哈哈哈哈!

char * smallestSubsequence(char * s){
int len = strlen(s);
int *idx = calloc (26,sizeof(int));
bool *seen = calloc (26,sizeof(bool));
char *ret = calloc (len,sizeof(int));
for (int i=0; i<len; i++)
idx[s[i]-'a']=i;
int top = -1;
for (int i=0; i< len;i++)
{
if (seen[s[i]-'a'])
continue;
while (top >=0 && s[i]<ret[top] &&
i< idx[ret[top]-'a'])
{
seen[ret[top]-'a']=false;
top--;
}
ret[++top]= s[i];
seen[s[i]-'a']= true;
}
return ret;
}

沒有留言:

張貼留言