中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

聊城網(wǎng)站優(yōu)化信息網(wǎng)頁廣告

聊城網(wǎng)站優(yōu)化信息,網(wǎng)頁廣告,在線室內(nèi)設(shè)計工具,烹飪考試試卷哪個網(wǎng)站可以做1.題目描述 735. 行星碰撞 給定一個整數(shù)數(shù)組 asteroids,表示在同一行的行星。 對于數(shù)組中的每一個元素,其絕對值表示行星的大小,正負(fù)表示行星的移動方向(正表示向右移動,負(fù)表示向左移動)。每一顆行星以相…

1.題目描述

735. 行星碰撞

給定一個整數(shù)數(shù)組 asteroids,表示在同一行的行星。

對于數(shù)組中的每一個元素,其絕對值表示行星的大小,正負(fù)表示行星的移動方向(正表示向右移動,負(fù)表示向左移動)。每一顆行星以相同的速度移動。

找出碰撞后剩下的所有行星。碰撞規(guī)則:兩個行星相互碰撞,較小的行星會爆炸。如果兩顆行星大小相同,則兩顆行星都會爆炸。兩顆移動方向相同的行星,永遠(yuǎn)不會發(fā)生碰撞。

示例 1:

輸入:asteroids = [5,10,-5]
輸出:[5,10]
解釋:10 和 -5 碰撞后只剩下 10 。 5 和 10 永遠(yuǎn)不會發(fā)生碰撞。

示例 2:

輸入:asteroids = [8,-8]
輸出:[]
解釋:8 和 -8 碰撞后,兩者都發(fā)生爆炸。

示例 3:

輸入:asteroids = [10,2,-5]
輸出:[10]
解釋:2 和 -5 發(fā)生碰撞后剩下 -5 。10 和 -5 發(fā)生碰撞后剩下 10 。

2.解題思路與代碼

2.1 解題思路

題目說正數(shù)行星向右運(yùn)動,負(fù)數(shù)行星向左運(yùn)動,那么當(dāng)數(shù)組中遇到負(fù)數(shù)時,就需要與該數(shù)前面的正數(shù)進(jìn)行比較,如果前面是正數(shù),那么發(fā)生碰撞留下絕對值較大的;絕對值相等則抵消,兩數(shù)消失。根據(jù)這一思路,使用棧進(jìn)行解答。遍歷數(shù)組如果當(dāng)前數(shù)大于 0 ,并且棧頂元素小于 0,那么就需要彈出棧頂元素與當(dāng)前數(shù)進(jìn)行比較,就會有以下三種情況:

  • 如果當(dāng)前元素絕對值大于彈出元素絕對值,選擇當(dāng)前元素,繼續(xù)彈出棧頂元素進(jìn)行比較;
  • 如果當(dāng)前元素絕對值小于彈出元素絕對值,選擇彈出元素并退出循環(huán),彈出元素重新入棧
  • 如果當(dāng)前元素絕對值等于彈出元素絕對值,兩數(shù)同時消失

下面用題目示例 [5, 10, -5] 進(jìn)行圖解:

  1. 首先 index=0 指向 5,此時棧為空直接入棧

  2. index 右移,此時 index 指向元素和棧頂元素都大于 0,方向相同不會碰撞直接入棧
    在這里插入圖片描述

  3. index 右移,此時 index 指向 -5,棧頂元素為 10,會發(fā)生碰撞因此彈出棧頂 10 與 -5 進(jìn)行比較,10 的絕對值大于 -5 的絕對值,因此 -5 消失留下 10。循環(huán)這一步,當(dāng)前元素為 10 棧頂為 5 不會發(fā)生碰撞,10 重新入棧

  4. 數(shù)組遍歷完成,最后棧中留下 5 和 10 位最終答案

由于答案需要返回一個數(shù)組,為了便于最終將結(jié)果轉(zhuǎn)數(shù)組因此代碼中使用數(shù)組模擬棧,同樣也可以使用雙端隊列來做。

2.2 代碼

class Solution {public int[] asteroidCollision(int[] asteroids) {// 為便于返回結(jié)果數(shù)組,使用數(shù)組模擬棧int[] stack = new int[asteroids.length];int idx = -1;// 開始時將數(shù)組第一個元素入棧stack[++idx] = asteroids[0];int index = 1;while (index < asteroids.length) {Integer chooseNum = asteroids[index];// 當(dāng)選擇數(shù)字小于 0,棧頂數(shù)字大于 0 時會發(fā)生碰撞,需要進(jìn)行處理while (idx > -1 && chooseNum < 0 && stack[idx] > 0) {// 彈出棧頂數(shù)字Integer pop = stack[idx--];if (Math.abs(chooseNum) > pop) {// 如果選擇的數(shù)絕對值大于彈出棧的數(shù)絕對值,則保留選擇的數(shù),繼續(xù)循環(huán)continue;} else if (Math.abs(chooseNum) < pop) {// 如果選擇的數(shù)絕對值小于彈出棧的數(shù)絕對值,選擇數(shù)字改為彈出的數(shù)字// 下次循環(huán)條件判斷不通過,退出循環(huán)后直接重新入棧chooseNum = pop;} else {// 如果選擇的數(shù)絕對值等于彈出棧的數(shù)絕對值,兩數(shù)同時消失,chooseNum 置 nullchooseNum = null;break;}}if (chooseNum != null) {stack[++idx] = chooseNum;}index++;}int[] ans = new int[idx + 1];System.arraycopy(stack, 0, ans, 0, idx + 1);return ans;}
}

2.3 測試結(jié)果

通過測試

測試結(jié)果

3.總結(jié)

  • 使用棧進(jìn)行解答
  • 當(dāng)元素大于 0,棧頂元素小于 0 時會發(fā)生碰撞,此時需要處理
  • 處理時比較當(dāng)前元素和彈出棧元素的絕對值大小,絕對值大的保留,并循環(huán)比較保留數(shù)和棧頂元素的情況
http://www.risenshineclean.com/news/3629.html

相關(guān)文章:

  • 門戶網(wǎng)站建站注意事項國家免費(fèi)技能培訓(xùn)平臺
  • 怎么在自己做的網(wǎng)站上發(fā)視頻引擎網(wǎng)站
  • 深圳建設(shè)集團(tuán)網(wǎng)站首頁百度競價代運(yùn)營外包
  • 重慶網(wǎng)站制作那家好如何快速被百度收錄
  • 云南網(wǎng)站做的好的公司簡介愛站網(wǎng)站
  • 在線代理上網(wǎng)蘭州seo外包公司
  • 域名個人用戶可以做企業(yè)網(wǎng)站嗎谷歌seo網(wǎng)站建設(shè)
  • apk開發(fā)網(wǎng)絡(luò)運(yùn)營seo是什么
  • 建設(shè)部門網(wǎng)站查詢湖南百度推廣代理商
  • 邯鄲網(wǎng)站建設(shè)公司做網(wǎng)站設(shè)計哪里有
  • 網(wǎng)絡(luò)電商培訓(xùn)課程網(wǎng)站設(shè)計品牌營銷策略分析論文
  • 大型門戶網(wǎng)站程序泰州seo公司
  • 蘇州規(guī)劃建設(shè)局網(wǎng)站搜索引擎優(yōu)化的報告
  • 陜西省住房和城鄉(xiāng)建設(shè)廳官方網(wǎng)站成都計算機(jī)培訓(xùn)機(jī)構(gòu)排名前十
  • 佛山新網(wǎng)站建設(shè)方案西安建站推廣
  • 網(wǎng)站設(shè)計導(dǎo)航神馬網(wǎng)站快速排名案例
  • 網(wǎng)站備案密碼收不到做網(wǎng)絡(luò)營銷推廣的公司
  • 手機(jī)網(wǎng)站建設(shè)咨詢查詢百度關(guān)鍵詞排名
  • ui設(shè)計與制作培訓(xùn)東莞seo技術(shù)
  • ea賬號注冊網(wǎng)址北京seo優(yōu)化技術(shù)
  • 網(wǎng)站建設(shè)主要包括哪兩個方面搜索seo優(yōu)化
  • 怎么自己做時時彩網(wǎng)站免費(fèi)網(wǎng)站建設(shè)哪個好
  • 免費(fèi)外貿(mào)網(wǎng)站有哪些網(wǎng)絡(luò)安全培訓(xùn)機(jī)構(gòu)哪家好
  • 重慶企業(yè)網(wǎng)站建設(shè)聯(lián)系電話太原seo代理商
  • 網(wǎng)盤做網(wǎng)站空間附近電腦培訓(xùn)班位置
  • 微信公眾號手機(jī)網(wǎng)站百度優(yōu)化軟件
  • 競價網(wǎng)站和優(yōu)化網(wǎng)站的區(qū)別跨境電商seo是什么意思
  • c sql網(wǎng)站開發(fā)搜索引擎優(yōu)化的缺點包括
  • seo怎樣新建網(wǎng)站優(yōu)化設(shè)計六年級上冊語文答案
  • 書籍網(wǎng)站開發(fā)多少錢中國輿情網(wǎng)