iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
Software Development

30天快速打造Python資料結構&演算法邏輯刷爆LeetCode系列 第 23

DAY 23 「陣列 Leetcode」題目的Python程式碼撰寫~

  • 分享至 

  • xImage
  •  

陣列:總結篇

  • 二分查找 (Binary Search) - 題號:704
    題目描述:給定一個按照升序排列的整數陣列 nums,和一個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。
def search(nums, target):
    left, right = 0, len(nums) - 1
    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1
  • 移除元素 (Remove Element) - 題號:27
    題目描述:給你一個陣列 nums 和一個值 val,你需要原地移除所有數值等於 val 的元素,並返回移除後陣列的新長度。
def removeElement(nums, val):
    i = 0
    for j in range(len(nums)):
        if nums[j] != val:
            nums[i] = nums[j]
            i += 1
    return i
  • 有序陣列的平方 (Squares of a Sorted Array) - 題號:97
    題目描述:給定一個按非遞減順序排序的整數陣列 nums,返回每個數字的平方組成的新陣列,要求也按非遞減順序排序。
def sortedSquares(nums):
    n = len(nums)
    result = [0] * n
    left, right = 0, n - 1
    for i in range(n - 1, -1, -1):
        if abs(nums[left]) > abs(nums[right]):
            result[i] = nums[left] ** 2
            left += 1
        else:
            result[i] = nums[right] ** 2
            right -= 1
    return result
  • 長度最小的子陣列 (Minimum Size Subarray Sum) - 題號:209
    題目描述:給定一個含有 n 個正整數的陣列和一個正整數 s,找出該陣列中滿足其和 ≥ s 的長度最小的連續子數組,並返回其長度。如果不存在符合條件的連續子陣列,返回 0。
def minSubArrayLen(s, nums):
    n = len(nums)
    left = 0
    min_len = float('inf')
    curr_sum = 0
    for right in range(n):
        curr_sum += nums[right]
        while curr_sum >= s:
            min_len = min(min_len, right - left + 1)
            curr_sum -= nums[left]
            left += 1
    return min_len if min_len != float('inf') else 0
  • 螺旋矩陣II (Spiral Matrix II) - 題號:59
    題目描述:給定一個正整數 n,生成一個包含 1 到 n^2 所有元素,且元素按順時針順序螺旋排列的 n x n 正方形矩陣。
def generateMatrix(n):
    matrix = [[0] * n for _ in range(n)]
    top, bottom, left, right = 0, n - 1, 0, n - 1
    num = 1
    while num <= n*n:
        for i in range(left, right + 1):
            matrix[top][i] = num
            num += 1
        top += 1
        for i in range(top, bottom + 1):
            matrix[i][right] = num
            num += 1
        right -= 1
        for i in range(right, left - 1, -1):
            matrix[bottom][i] = num
            num += 1
        bottom -= 1
        for i in range(bottom, top - 1, -1):
            matrix[i][left] = num
            num += 1
        left += 1
    return matrix

上一篇
DAY 22「最長無重覆子串 (Longest Substring Without Repeating Characters)」Leetcode題目的Python程式碼撰寫~
下一篇
DAY 24 「串列 Leetcode」題目的Python程式碼撰寫~
系列文
30天快速打造Python資料結構&演算法邏輯刷爆LeetCode30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言