Re: [閒聊] 每日leetcode

作者: 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

Links booklink

Contact Us: admin [ a t ] ucptt.com