作者oin1104 (是oin的說)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Sat Jul 13 13:44:50 2024
機掰
今天這題我之前用c寫過
我看到笑死
怎麼這麼雞巴又長又醜
邏輯跟現在差不多
給你們看一下
typedef struct {
int pos;
int hp;
char dir;
int num;
} robot;
int cmp (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int cmp2 (const void * a, const void * b)
{
return ( ((robot*)a)->num - ((robot*)b)->num );
}
int* survivedRobotsHealths(int* positions, int positionsSize, int* healths, int
healthsSize, char * directions, int* returnSize)
{
robot relaxing234[100000] = {};
for(int i = 0 ; i < positionsSize ; i ++)
{
relaxing234[i].pos = positions[i];
relaxing234[i].hp = healths[i];
relaxing234[i].dir = directions[i];
relaxing234[i].num = i;
}
qsort(relaxing234 , positionsSize , sizeof(robot) , cmp);
robot stack[100000] = {};
int top = 0;
for(int i = 0 ; i < positionsSize ; i++)
{
if(relaxing234[i].dir == 'R')
{
stack[top] = relaxing234[i];
top++;
}
else if(relaxing234[i].dir == 'L')
{
if(top == 0)
{
stack[top] = relaxing234[i];
top++;
}
else if((top != 0)&&(stack[top-1].dir == 'L'))
{
stack[top] = relaxing234[i];
top++;
}
else if((top != 0)&&(stack[top-1].dir == 'R'))
{
if(stack[top-1].hp > relaxing234[i].hp)
{
stack[top-1].hp --;
}
else if(stack[top-1].hp == relaxing234[i].hp)
{
top --;
}
else if(stack[top-1].hp < relaxing234[i].hp)
{
int test = 0;
while(1)
{
if((top != 0)&&(stack[top-1].hp > relaxing234[i].hp)&&(s
tack[top-1].dir=='R'))
{
stack[top-1].hp --;
break;
}
else if((top != 0)&&(stack[top-1].hp == relaxing234[i].h
p)&&(stack[top-1].dir=='R'))
{
top --;
break;
}
else if((top != 0)&&(stack[top-1].hp < relaxing234[i].hp
)&&(stack[top-1].dir=='R'))
{
stack[top-1] = relaxing234[i];
stack[top-1].hp --;
relaxing234[i].hp --;
top --;
}
if((top == 0)||(stack[top-1].dir=='L'))
{
stack[top] = relaxing234[i];
top++;
break;
}
}
}
}
}
}
*returnSize = top;
robot *map = malloc(sizeof(robot)*top);
int *amap = malloc(sizeof(int)*top);
int *wtf = malloc(sizeof(int)*0);
if(top == 0)return wtf;
for(int i = 0 ; i < top ; i ++)
{
map[i] = stack[i];
}
qsort(map , top , sizeof(robot) , cmp2);
for(int i = 0 ; i < top ; i ++)
{
amap[i] = map[i].hp;
}
if(top == 0)return wtf;
return amap;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.13.212 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1720849492.A.1F3.html
推 CanIndulgeMe: 芋圓是技術大神 07/13 13:45
推 Smallsh: 大師 07/13 13:48