快轉到主要內容
  1. LeetCode/

LeetCode 556: Next Greater Element III

·1 分鐘· ·
LeetCode Blog Medium
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: medium 第一次嘗試: 2025-04-13

  • 總花費時間:5:00.00

解題思路
#

這是一個經典的 Next Permutation 問題,但額外多了一個限制條件:
最終結果必須符合 32 位元有號整數的範圍。
因此,在演算法的最後,我們需要額外進行一次判斷,以確保結果是有效的。

解法
#

class Solution:
    def nextGreaterElement(self, n: int) -> int:
        digits = list(str(n))

        i = len(digits)-2
        while i != -1 and digits[i]>=digits[i+1]:
            i -= 1

        if i == -1:
            return -1

        j = len(digits)-1
        while digits[i]>=digits[j]: 
            j -=1

        digits[i], digits[j] = digits[j], digits[i]
        digits[i+1:] = reversed(digits[i+1:])
        res = int("".join(digits))

        return res if res < 1<<31 else -1

學習
#

  1. 1 << 32 表示將數字 1 左移到第 32 個位元位置,等價於計算 2 的 32 次方。

遇到的問題
#

NA

相關文章

LeetCode 1922: Count Good Numbers
·1 分鐘
LeetCode Blog Daily Medium
LeetCode 解題紀錄
LeetCode 3517: Smallest Palindromic Rearrangement I
·1 分鐘
LeetCode Blog Weekly Medium
LeetCode 解題紀錄
LeetCode 3513: Number of Unique XOR Triplets I
·1 分鐘
LeetCode Blog Bi-Weekly Medium Unsolved
LeetCode 解題紀錄
LeetCode 3516: Find Closest Person
·1 分鐘
LeetCode Blog Weekly Easy
LeetCode 解題紀錄
LeetCode 3512: Minimum Operations to Make Array Sum Divisible by K
·1 分鐘
LeetCode Blog Bi-Weekly Easy
LeetCode 解題紀錄
LeetCode 2843: Count Symmetric Integers
·1 分鐘
LeetCode Blog Daily Easy
LeetCode 解題紀錄