欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言LeetCode題解1046最后一塊石頭的重量

 更新時(shí)間:2022年12月28日 09:51:18   作者:劉09k11  
這篇文章主要為大家介紹了Go語(yǔ)言LeetCode題解1046最后一塊石頭的重量,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目描述

1046. 最后一塊石頭的重量 - 力扣(LeetCode)

有一堆石頭,每塊石頭的重量都是正整數(shù)。

每一回合,從中選出兩塊 最重的 石頭,然后將它們一起粉碎。假設(shè)石頭的重量分別為 x 和 y,且 x <= y。那么粉碎的可能結(jié)果如下:

  • 如果 x == y,那么兩塊石頭都會(huì)被完全粉碎;
  • 如果 x != y,那么重量為 x 的石頭將會(huì)完全粉碎,而重量為 y 的石頭新重量為 y-x。

最后,最多只會(huì)剩下一塊石頭。返回此石頭的重量。如果沒(méi)有石頭剩下,就返回 0。

示例:

輸入:[2,7,4,1,8,1]
輸出:1
解釋:
先選出 7 和 8,得到 1,所以數(shù)組轉(zhuǎn)換為 [2,4,1,1,1],
再選出 2 和 4,得到 2,所以數(shù)組轉(zhuǎn)換為 [2,1,1,1],
接著是 2 和 1,得到 1,所以數(shù)組轉(zhuǎn)換為 [1,1,1],
最后選出 1 和 1,得到 0,最終數(shù)組轉(zhuǎn)換為 [1],這就是最后剩下那塊石頭的重量。

提示:

1 <= stones.length <= 30

1 <= stones[i] <= 1000

思路分析

  • 這里用到了Arrays.sort排序,得到了從小到大的數(shù)組。
  • 接下來(lái)用lastIndex指針指向未被粉碎的最后一個(gè)元素,取兩個(gè)最大的石頭,下標(biāo)lastIndex,lastIndex-1。兩者相減的差值賦給lastIndex-1,再移動(dòng)下lastIndex指針就相當(dāng)于刪除了最后一個(gè)元素了
  • 也可以改寫成遞歸,思路是一樣的。

AC 代碼

import java.util.Arrays;
class Solution {
//一堆石頭 每一顆石頭重量都是整數(shù)
// 每一回合 選出兩顆重量最大的石頭 x、y x<=y
// x==y 完全粉碎   x!=y y=y-x
//    最后最多會(huì)剩下一顆石頭 返回該石頭重量 如果沒(méi)有剩下 則返回0
    private int lastIndex;
    private int left;
    public int lastStoneWeight(int[] stones) {
        lastIndex = stones.length-1;
        Arrays.sort(stones);
        while (lastIndex>=1){
            left = stones[lastIndex]-stones[lastIndex-1];
            if (left==0){
               lastIndex=lastIndex-2;
               if (lastIndex==-1){
                   return 0;
               }
            }else {
                stones[--lastIndex]=left;
                Arrays.sort(stones);
            }
        }
        return stones[lastIndex];
    }   
}

參考

非排序法 - 最后一塊石頭的重量 - 力扣(LeetCode)

以上就是Go語(yǔ)言LeetCode題解1046最后一塊石頭的重量的詳細(xì)內(nèi)容,更多關(guān)于Go題解最后一塊石頭重量的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go并發(fā)與鎖的兩種方式該如何提效詳解

    Go并發(fā)與鎖的兩種方式該如何提效詳解

    如果沒(méi)有鎖,在我們的項(xiàng)目中,可能會(huì)存在多個(gè)goroutine同時(shí)操作一個(gè)資源(臨界區(qū)),這種情況會(huì)發(fā)生競(jìng)態(tài)問(wèn)題(數(shù)據(jù)競(jìng)態(tài)),下面這篇文章主要給大家介紹了關(guān)于Go并發(fā)與鎖的兩種方式該如何提效的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • golang中判斷請(qǐng)求是http還是https獲取當(dāng)前訪問(wèn)地址

    golang中判斷請(qǐng)求是http還是https獲取當(dāng)前訪問(wèn)地址

    這篇文章主要為大家介紹了golang中判斷請(qǐng)求是http還是https獲取當(dāng)前訪問(wèn)地址示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Golang配置解析神器go?viper使用詳解

    Golang配置解析神器go?viper使用詳解

    viper是一個(gè)很完善的Go項(xiàng)目配置解決方案,很多著名的開源項(xiàng)目都在使用,比如Hugo,Docker都使用了該庫(kù),使用viper可以讓我們專注于自己的項(xiàng)目代碼,而不用自己寫那些配置解析代碼,本文給大家介紹Golang配置解析神器go?viper使用,感興趣的朋友一起看看吧
    2022-05-05
  • 一文詳解Golang使用接口支持Apply方法的配置模式

    一文詳解Golang使用接口支持Apply方法的配置模式

    這篇文章主要為大家介紹了一文詳解Golang使用接口支持Apply方法的配置模式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 使用golang開發(fā)一個(gè)curl命令行工具

    使用golang開發(fā)一個(gè)curl命令行工具

    這篇文章主要為大家詳細(xì)介紹了如何使用golang開發(fā)一個(gè)簡(jiǎn)單的curl命令行工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Go語(yǔ)言無(wú)緩沖的通道的使用

    Go語(yǔ)言無(wú)緩沖的通道的使用

    Go語(yǔ)言中無(wú)緩沖的通道是指在接收前沒(méi)有能力保存任何值的通道,本文主要介紹了Go語(yǔ)言無(wú)緩沖的通道的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Go語(yǔ)言使用swagger生成接口文檔的方法

    Go語(yǔ)言使用swagger生成接口文檔的方法

    這篇文章主要介紹了Go語(yǔ)言使用swagger生成接口文檔的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • golang之JWT實(shí)現(xiàn)的示例代碼

    golang之JWT實(shí)現(xiàn)的示例代碼

    這篇文章主要介紹了golang之JWT實(shí)現(xiàn)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 使用Go語(yǔ)言簡(jiǎn)單模擬Python的生成器

    使用Go語(yǔ)言簡(jiǎn)單模擬Python的生成器

    這篇文章主要介紹了使用Go語(yǔ)言簡(jiǎn)單模擬Python的生成器,Python的generator是非??岬墓δ?用Go實(shí)現(xiàn)的代碼也較為簡(jiǎn)潔,需要的朋友可以參考下
    2015-08-08
  • 創(chuàng)建第一個(gè)Go語(yǔ)言程序Hello,Go!

    創(chuàng)建第一個(gè)Go語(yǔ)言程序Hello,Go!

    這篇文章主要介紹了創(chuàng)建第一個(gè)Go語(yǔ)言程序Hello,Go!本文詳細(xì)的給出項(xiàng)目創(chuàng)建、代碼編寫的過(guò)程,同時(shí)講解了GOPATH、Go install等內(nèi)容,需要的朋友可以參考下
    2014-10-10

最新評(píng)論