Skip to content

Commit

Permalink
July 13 Daily
Browse files Browse the repository at this point in the history
  • Loading branch information
yufeige4 committed Jul 13, 2022
1 parent 5695a20 commit 3102e19
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
11 changes: 11 additions & 0 deletions DataStructures/Array/LC1252.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@

using namespace std;

// 1252. 奇数值单元格的数目
// 给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0。

// 另有一个二维索引数组?indices,indices[i] = [ri, ci] 指向矩阵中的某个位置,其中 ri 和 ci 分别表示指定的行和列(从 0 开始编号)。

// 对 indices[i] 所指向的每个位置,应同时执行下述增量操作:

// ri 行上的所有单元格,加 1 。
// ci 列上的所有单元格,加 1 。
// 给你 m、n 和 indices 。请你在执行完所有?indices?指定的增量操作后,返回矩阵中 奇数值单元格 的数目。

class Solution {
public:
// 直接模拟 O(q*m*n+m*n)
Expand Down
63 changes: 63 additions & 0 deletions DataStructures/Stack&Queue/LC735.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#include <bits/stdc++.h>

using namespace std;

// 735. 行星碰撞

// 给定一个整数数组 asteroids,表示在同一行的行星。
// 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。
// 找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。

class Solution {
public:
// 使用双端队列暴力
vector<int> asteroidCollision1(vector<int>& asteroids) {
deque<int> myQ;
vector<int> result;
for(auto& i : asteroids){
bool diffDirect = i<0;
bool boom = false;
int val = abs(i);
while(!myQ.empty()&&diffDirect&&val>=myQ.front()){
if(val==myQ.front()){
boom = true;
myQ.pop_front();
break;
}
myQ.pop_front();
}
if(!boom){
if(!diffDirect){
myQ.push_front(i);
}else if(myQ.empty()){
result.push_back(i);
}
}
}
while(!myQ.empty()){
result.push_back(myQ.back());
myQ.pop_back();
}
return result;
}
// 数组模拟栈空间优化
vector<int> asteroidCollision2(vector<int>& asteroids) {
vector<int> result;
for(auto& i : asteroids){
bool diffDirect = i<0;
bool boom = false;
int val = abs(i);
// 当行星没爆炸并 且 会发生碰撞
while(!boom&&!result.empty()&&diffDirect&&result.back()>0){
boom = val<=result.back();
if(val>=result.back()){
result.pop_back();
}
}
if(!boom){
result.push_back(i);
}
}
return result;
}
};

0 comments on commit 3102e19

Please sign in to comment.