LeetCode75——Day25

2023-11-04 09:44
文章标签 leetcode75 day25

本文主要是介绍LeetCode75——Day25,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一、题目
    • 二、题解

一、题目

735. Asteroid Collision

We are given an array asteroids of integers representing asteroids in a row.

For each asteroid, the absolute value represents its size, and the sign represents its direction (positive meaning right, negative meaning left). Each asteroid moves at the same speed.

Find out the state of the asteroids after all collisions. If two asteroids meet, the smaller one will explode. If both are the same size, both will explode. Two asteroids moving in the same direction will never meet.

Example 1:

Input: asteroids = [5,10,-5]
Output: [5,10]
Explanation: The 10 and -5 collide resulting in 10. The 5 and 10 never collide.
Example 2:

Input: asteroids = [8,-8]
Output: []
Explanation: The 8 and -8 collide exploding each other.
Example 3:

Input: asteroids = [10,2,-5]
Output: [10]
Explanation: The 2 and -5 collide resulting in -5. The 10 and -5 collide resulting in 10.

Constraints:

2 <= asteroids.length <= 104
-1000 <= asteroids[i] <= 1000
asteroids[i] != 0

二、题解

利用vector模拟栈,无需使用stack

class Solution {
public:vector<int> asteroidCollision(vector<int>& asteroids) {int n = asteroids.size();vector<int> st;for(int i = 0;i < n;i++){if(st.empty()) st.push_back(asteroids[i]);else{if(st.back() > 0 && asteroids[i] < 0){int sub = abs(asteroids[i]) - abs(st.back());if(sub == 0) st.pop_back();else if(sub > 0){while(!st.empty() && st.back() > 0 && (abs(asteroids[i]) - abs(st.back()) > 0)) st.pop_back();if(st.empty()) st.push_back(asteroids[i]);else if((0 == abs(asteroids[i]) - abs(st.back())) && st.back() > 0) st.pop_back();else if(st.back() < 0) st.push_back(asteroids[i]);}}else st.push_back(asteroids[i]);}}return st;}
};

这篇关于LeetCode75——Day25的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/344909

相关文章

代码随想录打卡Day25

今天一整天都在教研室做实验,没时间刷题,就做了一题,剩下的明天补 491.递增子序列 这道题目和之前的子集问题很像,但是有一点要注意的,这个输入的数组不能进行排序,所以就不能沿用之前的去重逻辑,这道题要去重还是得借助额外的变量来维护元素使用情况,但是这题的used为集合,且不能为全局变量,只能为树层遍历前定义的一个局部变量,除了这个改动以外,其他地方都是高度相似的。 class Soluti

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II 1.题目 1.1递增子序列 题目链接:491. 非递减子序列 - 力扣(LeetCode) 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列_哔哩哔哩_bilibili 文档讲解:https://programmercarl.com/0491.%E9%80%92%E

day25 Java基础——面向对象两万字详解!(纯干货)

day25 Java基础——面向对象两万字详解!(纯干货) 文章目录 day25 Java基础——面向对象两万字详解!(纯干货)1. 类与对象的关系类(Class)对象(Object)类与对象的关系示例 2. 创建与初始化对象创建对象初始化对象示例 3. 构造器详解构造器的定义构造器的特点构造器的使用示例实操 4. 创建对象内存分析内存分配内存布局初始化示例内存分析注意事项 5. 简单小结

每日5题Day25 - LeetCode 121 - 125

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:121. 买卖股票的最佳时机 - 力扣(LeetCode) class Solution {public int maxProfit(int[] prices) {if(prices.length == 1){return 0;}//dp[0]代表最小值,dp[1]代表最大利润int[] dp = new int[2];dp

Day25 首页待办事项及备忘录添加功能

​ 本章节,完成首页待办事项及备忘录添加功能 一.修改待办事项和备忘录逻辑处理类,即AddMemoViewModel和AddTodoViewModel 在 AddMemoViewModel逻辑处理类中,为了支持与其关联的View视图文件的数据绑定,需要定义一个与视图文件相匹配的实体类 Model。这个Model将包含 View中需要展示和编辑的数据属性,以便在 ViewModel和Vi

day25回溯算法part02| 216.组合总和III 17.电话号码的字母组合

216.组合总和III 题目链接/文章讲解 | 视频讲解 class Solution {public:vector<vector<int>> result;vector<int> path;int sum;void backtracking(int n, int k, int startindex) {// int sum = accumulate(path.begin(), path

Wpf 使用 Prism 实战开发Day25

首页待办事项及备忘录添加功能 一.修改待办事项和备忘录逻辑处理类,即AddMemoViewModel和AddTodoViewModel  1.AddMemoViewModel 逻辑处理类,添加View视图数据要绑定的实体类 Model public class AddMemoViewModel :BindableBase,IDialogHostAware{public AddMemoV

Day25:Leetcode:669. 修剪二叉搜索树 + 108.将有序数组转换为二叉搜索树 + 538.把二叉搜索树转换为累加树

LeetCode:669. 修剪二叉搜索树 问题描述 解决方案: 1.思路 2.代码实现 class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root == null) {return null;}if (root.val < low) {return trimBST(root.ri

代码随想录算法训练营day25 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 看题解做出来的 class Solution:def trimBST(self, root: Optional[TreeNode], low: int, high: int) -> Optional[TreeNode]:if not root:return Noneif root.val < low:return self.trimBST(root.right, lo

day25-0 1矩阵

目录 题目描述: 示例 1: 示例 2: 解决方案: 函数代码: 题目描述: 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离,两个相邻元素间的距离为 1 。 示例 1: 输入:mat = [ [0,0,0],[0,1,0],[0,0,0]]输出: [[0,0,0],[0,1,0