當前位置:首頁 » 編程語言 » pythonmid

pythonmid

發布時間: 2023-07-25 02:26:33

⑴ 【python】數組中絕對值最小的數

題目:有一個升序的數組,數組中可能有正數、負數或者0,求數組中元素的絕對值最小的數。例如,數組[-10, -5, -2, 7, 15, 50],該數組中絕對值最小的數是-2。

分析:二分法。該題可分為以下三種情況:

(1)如果數組第一個元素為非負數,那麼minNum = arr[0]

(2)如果數組最後一個值為負數,那麼minNum = arr[-1]。

(3)如果數組中既有正數又有負數,首先找到正數與負數的分界點,如果分界點恰好為0,那麼0為最小值。否則通過比較分界點左右的正數與負數的絕對值來確定最小數。

如何查找正數與負數的分界點呢?採用二分法,主要思路:取數組中間位置的值a[mid],並將它與0值比較,比較結果分為如下三種情況:

(1)如果a[mid] == 0,那麼這個數就是絕對值最小的數。

(2)如果a[mid] > 0,a[mid - 1] < 0,那麼通過比較a[mid]與a[mid - 1]的絕對值就可以找到數組中絕對值最小的數;如果a[mid - 1] == 0, 那麼a[mid - 1]就是要找的數;否則接著在數組的左半部分查找。

(3)如果a[mid] < 0,a[mid + 1] > 0,那麼通過比較a[mid]與a[mid +1]的絕對值就可以找到數組中絕對值最小的數;如果a[mid + 1] == 0, 那麼a[mid + 1]就是要找的數;否則接著在數組的右半部分查找。

code:

def findMinNum(arr):

    if arr is None or len(arr) <= 0:

        return

    # [1] 數組中沒有負數

    if arr[0] >= 0:

        return arr[0]

    # [2] 數組中沒有正數

    if arr[-1] <= 0:

        return arr[-1]

    # [3] 數組中既有正數又又負數

    mid = None

    absMin = None

    begin = 0

    end = len(arr) - 1

    while begin < end:

        mid = begin + (end - begin) >> 1

        # 如果arr[mid] == 0,則是絕對值最小的數

        if arr[mid] == 0:

            return 0

        # 如果大於0, 正負數的分界點在左側

        elif arr[mid] > 0:

            # 繼續在數組的左半部分查找

            if arr[mid - 1] > 0:

                end = mid - 1

            elif arr[mid - 1] == 0:

                return 0

            # 找到正負數的分界點

            else:

                break  # 如果小於0, 在數組右半部分查找

        else:

            # 在數組的右半部分繼續查找

            if arr[mid + 1] < 0:

                begin = mid + 1

            elif arr[mid + 1] == 0:

                return 0

            else:

                break

    # 獲取正負數分界點處絕對值最小的值

    if (arr[mid] > 0):

        if arr[mid] < abs(arr[mid - 1]):

            absMin = arr[mid]

        else:

            absMin = arr[mid - 1]

    else:

        if abs(arr[mid]) < abs(arr[mid + 1]):

            absMin = arr[mid]

        else:

            absMin = arr[mid + 1]

    return absMin

if __name__ == "__main__":

    arr = [-10, -5, -2, 7, 15, 50]

    print(findMinNum(arr))

⑵ python中如何從字元串中提取數字

1、如下圖,要提取#後面的字元,也即紅色的「SDK」到B列。

6、綜上,=MID(A2,FIND("#",A2)+1,99)的意思就是從A2單元格#字元後面的一個字元起,取長度為99的字元串。其中的99是一個較大的數字,能涵蓋#後字元的最大長度即可。
熱點內容
電腦無法訪問公司伺服器怎麼辦 發布:2025-04-06 06:39:08 瀏覽:397
安卓防禦軟體哪個好 發布:2025-04-06 06:38:04 瀏覽:127
域名如何訪問文件夾 發布:2025-04-06 06:36:38 瀏覽:558
16進制轉10進制演算法 發布:2025-04-06 06:21:23 瀏覽:809
shell腳本forls 發布:2025-04-06 06:19:39 瀏覽:470
騰達2400s如何進配置 發布:2025-04-06 06:18:12 瀏覽:243
建行電子銀行的密碼是多少 發布:2025-04-06 06:15:40 瀏覽:117
sql分離資料庫失敗 發布:2025-04-06 06:11:17 瀏覽:691
oracle資料庫連接url 發布:2025-04-06 05:59:47 瀏覽:779
javachrome插件 發布:2025-04-06 05:56:49 瀏覽:300