楼主:
oin1104 (是oin的说)
2024-07-13 13:41:42※ 引述 《Rushia (早瀬ユウカの体操服)》 之铭言:
:
: https://leetcode.com/problems/robot-collisions/
: 2751. Robot Collisions
: 给你三个长度一样的阵列positions, healths, directions,分别表示机器人的座标、
: 生命、行走方向,机器人同时开始行走,如果不同方向的机器人碰到了,分成两情况:
: 1.其中一个机器人生命较高,生命较低的机器人hp变0,生命较高的机器人生命减一
: 2.机器人生命一样,两个hp一起变0
: 返回剩余hp大于0的机器人生命值阵列,并且按照原始输入的顺序。
:
思路 :
照着叙述用stack做
比较麻烦的就是要自己用一个struct
这样比较简洁
然后这题又有一些小鸡巴要求
需要排序
所以我就用了匿名函数
```cpp
class Solution {
public:
typedef struct robot
{
int pos;
int hp;
int dir;
int num;
}robot;
vector<int> survivedRobotsHealths(vector<int>& positions, vector<int>& healt
hs, string directions)
{
int len = positions.size();
vector<robot> save;
for(int i = 0 ; i < len ; i ++)
{
robot n;
n.pos=positions[i];
n.hp=healths[i];
n.dir = directions[i]=='R'? 1:-1;
n.num=i;
save.push_back(n);
}
sort(save.begin(),save.end(),[](robot &a , robot &b){return a.pos<b.pos;
});
vector<robot> paper;
for(robot n : save)
{
paper.push_back(n);
while(paper.size()>1 && paper[paper.size()-2].dir==1 && paper[paper.
size()-1].dir==-1)
{
if(paper[paper.size()-2].hp > paper[paper.size()-1].hp)
{
paper[paper.size()-2].hp