力扣題目彙總(加一,旋轉數組,整數反轉)

加一

1.題目描述

    1. 給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。python

      最高位數字存放在數組的首位, 數組中每一個元素只存儲一個數字。git

      你能夠假設除了整數 0 以外,這個整數不會以零開頭。算法

      示例 1:數組

      輸入: [1,2,3]
      輸出: [1,2,4]
      解釋: 輸入數組表示數字 123。

      示例 2:code

      輸入: [4,3,2,1]
      輸出: [4,3,2,2]
      解釋: 輸入數組表示數字 4321。

2.解題思路

#錯誤思路
列表最後一位加1,判斷最後一位是否爲9而後這樣會陷入死循環倒數第二是否是也是9,與其這個咱們乾脆就把思路換一下
#更改後的思路
列表-數字-數字+1-列表

3.解題

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        num_str = ''
        for a in digits:
            num_str += str(a)
        num_str = int(num_str) + 1
        num_str = str(num_str)
        num_str = ','.join(num_str)
        num_str = num_str.split(',')
        return [int(b) for b in num_str]

旋轉數組

1.題目描述

    • 給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數。leetcode

      示例 1:字符串

      輸入: [1,2,3,4,5,6,7] 和 k = 3
      輸出: [5,6,7,1,2,3,4]
      解釋:
      向右旋轉 1 步: [7,1,2,3,4,5,6]
      向右旋轉 2 步: [6,7,1,2,3,4,5]
      向右旋轉 3 步: [5,6,7,1,2,3,4]

      示例 2:get

      輸入: [-1,-100,3,99] 和 k = 2
      輸出: [3,99,-1,-100]
      解釋: 
      向右旋轉 1 步: [99,-1,-100,3]
      向右旋轉 2 步: [3,99,-1,-100]

      說明:it

      • 儘量想出更多的解決方案,至少有三種不一樣的方法能夠解決這個問題。
      • 要求使用空間複雜度爲 O(1) 的原地算法。

2.解題思路

能夠當作以K爲切分兩段字符串,而後先後位置對調,其中要解決就是K大約7後變化,那咱們就除7取餘數來解決
#這裏7表明給你的列表長度

3.解題

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        l = len(nums)
        k = k % l
        nums[:] = nums[l-k:] + nums[:l-k]

整數反轉

1.題目描述

給出一個 32 位的有符號整數,你須要將這個整數中每位上的數字進行反轉。io

示例 1:

輸入: 123
輸出: 321

示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

2.解題思路

1.末尾有0去0後反轉
2.開頭有-,-保持不變後面反轉

3.解題

class Solution:
    def reverse(self, x: int) -> int:
        new_x = '-'
        x = str(x)
        x = x[::-1]
        while x[-1] == 0:
            x = x[:-1]
        if x[-1] == '-':
            x = x[:-1]
            while x[-1] == 0:
                x = x[:-1]
            new_x += x
            x = new_x
        if int(x) < -2**31 or int(x) >2**31-1:
            return 0
        else:
            return int(x)

`有更加好的思路,或者解題方法評論區留言謝謝

相關文章
相關標籤/搜索