iT邦幫忙

2025 iThome 鐵人賽

0

題目說明

  1. Squares of a Sorted Array
    給你一個 非遞減排序的整數陣列 nums,
    返回 每個元素平方後的新陣列,並保持非遞減排序。

範例

Input: nums = [-4,-1,0,3,10]
Output: [0,1,9,16,100]

Input: nums = [-7,-3,2,3,11]
Output: [4,9,9,49,121]

程式碼

Python 解法(雙指針從兩端)

def sortedSquares(nums):
n = len(nums)
result = [0] * n
left, right = 0, n - 1
pos = n - 1
while left <= right:
if abs(nums[left]) > abs(nums[right]):
result[pos] = nums[left] ** 2
left += 1
else:
result[pos] = nums[right] ** 2
right -= 1
pos -= 1
return result

Java 解法(雙指針從兩端)

class Solution {
public int[] sortedSquares(int[] nums) {
int n = nums.length;
int[] result = new int[n];
int left = 0, right = n - 1, pos = n - 1;
while (left <= right) {
if (Math.abs(nums[left]) > Math.abs(nums[right])) {
result[pos] = nums[left] * nums[left];
left++;
} else {
result[pos] = nums[right] * nums[right];
right--;
}
pos--;
}
return result;
}
}

Java vs Python 差異
• Python 用 **2 做平方,Java 用 * 或 Math.pow()
• Python 語法較簡潔,Java 需明確定義陣列與索引
• 核心邏輯都是 雙指針從陣列兩端比較大小,從後往前填結果

複雜度分析
• 時間複雜度:O(n),每個元素只訪問一次
• 空間複雜度:O(n),需額外陣列存結果


上一篇
day 27 Max Consecutive Ones III
下一篇
day 29 Subarray Sum Equals K
系列文
不熟程式的我在leetcode打滾30天30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言