给你一个整数mass它表示一颗行星的初始质量。再给你一个整数数组asteroids其中asteroids[i]是第i颗小行星的质量。你可以按任意顺序重新安排小行星的顺序然后让行星跟它们发生碰撞。如果行星碰撞时的质量大于等于小行星的质量那么小行星被摧毁并且行星会获得这颗小行星的质量。否则行星将被摧毁。如果所有小行星都能被摧毁请返回true否则返回false。示例 1输入mass 10, asteroids [3,9,19,5,21]输出true解释一种安排小行星的方式为 [9,19,5,3,21] - 行星与质量为 9 的小行星碰撞。新的行星质量为10 9 19 - 行星与质量为 19 的小行星碰撞。新的行星质量为19 19 38 - 行星与质量为 5 的小行星碰撞。新的行星质量为38 5 43 - 行星与质量为 3 的小行星碰撞。新的行星质量为43 3 46 - 行星与质量为 21 的小行星碰撞。新的行星质量为46 21 67 所有小行星都被摧毁。示例 2输入mass 5, asteroids [4,9,23,4]输出false解释行星无论如何没法获得足够质量去摧毁质量为 23 的小行星。 行星把别的小行星摧毁后质量为 5 4 9 4 22 。 它比 23 小所以无法摧毁最后一颗小行星。提示1 mass 10^51 asteroids.length 10^51 asteroids[i] 10^5分析先将小行星按照质量从小到大排序记录最大的小行星质量。接着依次碰撞并更新行星质量如果某个小行星的质量大于了当前的行星质量说明这颗小行星无法被摧毁返回 false如果行星质量大于小行星的最大质量说明所有小行星都可以被摧毁返回 true。class Solution { public: bool asteroidsDestroyed(int mass, vectorint asteroids) { int nasteroids.size(),maxn-1; sort(asteroids.begin(),asteroids.end());maxnasteroids[n-1]; for(int i0;in;i) { if(massasteroids[i])massasteroids[i]; else return false; if(massmaxn)return true; } return true; } };
leetcode 2126. 摧毁小行星 中等
发布时间:2026/6/1 11:56:44
给你一个整数mass它表示一颗行星的初始质量。再给你一个整数数组asteroids其中asteroids[i]是第i颗小行星的质量。你可以按任意顺序重新安排小行星的顺序然后让行星跟它们发生碰撞。如果行星碰撞时的质量大于等于小行星的质量那么小行星被摧毁并且行星会获得这颗小行星的质量。否则行星将被摧毁。如果所有小行星都能被摧毁请返回true否则返回false。示例 1输入mass 10, asteroids [3,9,19,5,21]输出true解释一种安排小行星的方式为 [9,19,5,3,21] - 行星与质量为 9 的小行星碰撞。新的行星质量为10 9 19 - 行星与质量为 19 的小行星碰撞。新的行星质量为19 19 38 - 行星与质量为 5 的小行星碰撞。新的行星质量为38 5 43 - 行星与质量为 3 的小行星碰撞。新的行星质量为43 3 46 - 行星与质量为 21 的小行星碰撞。新的行星质量为46 21 67 所有小行星都被摧毁。示例 2输入mass 5, asteroids [4,9,23,4]输出false解释行星无论如何没法获得足够质量去摧毁质量为 23 的小行星。 行星把别的小行星摧毁后质量为 5 4 9 4 22 。 它比 23 小所以无法摧毁最后一颗小行星。提示1 mass 10^51 asteroids.length 10^51 asteroids[i] 10^5分析先将小行星按照质量从小到大排序记录最大的小行星质量。接着依次碰撞并更新行星质量如果某个小行星的质量大于了当前的行星质量说明这颗小行星无法被摧毁返回 false如果行星质量大于小行星的最大质量说明所有小行星都可以被摧毁返回 true。class Solution { public: bool asteroidsDestroyed(int mass, vectorint asteroids) { int nasteroids.size(),maxn-1; sort(asteroids.begin(),asteroids.end());maxnasteroids[n-1]; for(int i0;in;i) { if(massasteroids[i])massasteroids[i]; else return false; if(massmaxn)return true; } return true; } };