← 返回博客列表
Uber

🚨【Uber OA 真題流出】6道高頻題全解析:資源轉換、報紙排版、水果配對、數字魔法!

2026-01-13

Uber OA 估計是白嫖的 OA,很容易拿到,目前我們已經幫助大量客戶秒殺了此次 OA!

📊 題目規律分析

根據我們大量實戰經驗總結:

沒有自信的同學可以考慮找我們進行代寫,黑科技無視攝影機和共享螢幕,無視 AI 監考檢測,幫您順利進面試~

我們長期穩定承接各大科技公司如 Uber、TikTok、Google、Amazon 等的 OA 筆試代寫服務,確保滿分通過。如有需求,請隨時聯繫我們。


✅ 題目 1:Resource Conversion Simulation(資源轉換模擬)

題目描述

每個週期會發生以下三種事件之一:

計算流程停止前會經過多少個週期。

時間複雜度要求: O(resources.length ÷ conversionRate)

範例

輸入: resources = ["A", "A", "A", "A", "P", "P", "P", "P"], conversionRate = 2
輸出: 13

oavoservice 滿分解法

def solution(resources, conversionRate):
    resources = list(resources)
    cycles = 0
    
    while True:
        # 統計 P 的數量
        p_count = sum(1 for r in resources if r == 'P')
        
        # 選項 1: 轉換 P 為 A
        if p_count >= conversionRate:
            # 移除最後 conversionRate 個 P
            removed = 0
            i = len(resources) - 1
            while removed < conversionRate and i >= 0:
                if resources[i] == 'P':
                    resources.pop(i)
                    removed += 1
                i -= 1
            # 在開頭添加 A
            resources.insert(0, 'A')
            cycles += 1
        # 選項 2: A 變 P
        elif 'A' in resources:
            # 找到最後一個 A 並變為 P
            for i in range(len(resources) - 1, -1, -1):
                if resources[i] == 'A':
                    resources[i] = 'P'
                    break
            cycles += 1
        # 選項 3: 停止
        else:
            break
    
    return cycles

核心考點: 模擬 + 狀態轉換邏輯


✅ 題目 2:Newspaper Text Formatting(報紙文字排版)

題目描述

你需要格式化報紙頁面上的文字,要求如下:

排版規則:

  1. 每個段落從新行開始
  2. 按順序添加段落中的單詞,單詞之間用 1 個空格分隔
  3. 不能拆分單詞
  4. 如果行末有剩餘空間,置中對齊文字:
    • 偶數剩餘 → 前後空格相等
    • 奇數剩餘 → 額外空格放在右邊
  5. 在頁面的上、下、左、右添加 * 字元的矩形邊框

範例

輸入:
paragraphs = [["hello", "world"], ["How", "areYou", "doing"], ["Please", "look", "and", "align", "to", "the", "center"]]
width = 16

輸出:
[
  "******************",
  "*  hello world   *",
  "*How areYou doing*",
  "*Please look and *",
  "* align to the   *",
  "*    center      *",
  "******************"
]

oavoservice 滿分解法

def solution(paragraphs, width):
    result = []
    border = '*' * (width + 2)
    result.append(border)
    
    for paragraph in paragraphs:
        lines = []
        current_line = []
        current_length = 0
        
        for word in paragraph:
            # 檢查是否能添加到當前行
            space_needed = len(word) if not current_line else len(word) + 1
            if current_length + space_needed <= width:
                current_line.append(word)
                current_length += space_needed
            else:
                # 當前行滿了,保存並開始新行
                if current_line:
                    lines.append(' '.join(current_line))
                current_line = [word]
                current_length = len(word)
        
        # 添加最後一行
        if current_line:
            lines.append(' '.join(current_line))
        
        # 置中對齊每一行
        for line in lines:
            leftover = width - len(line)
            left_padding = leftover // 2
            right_padding = leftover - left_padding
            formatted_line = '*' + ' ' * left_padding + line + ' ' * right_padding + '*'
            result.append(formatted_line)
    
    result.append(border)
    return result

核心考點: 字串處理 + 貪心換行 + 置中對齊邏輯


✅ 題目 3:Fruit Pair Segments(水果配對區段)

題目描述

你是一個大型果園的檢查員。收穫後,水果被放在傳送帶上。你需要識別傳送帶上具有足夠重複水果數量的區段。

計算傳送帶上可以形成至少 k 對相同水果的連續區段數量。每個位置的水果在計數時最多只能屬於一對。

範例

輸入: fruits = [0, 1, 0, 1, 0], k = 2
輸出: 3

解釋:
有 3 個有效區段:
- [0,1,0] 的索引 0-2
- [1,0,1] 的索引 1-3
- [0,1,0] 的索引 2-4
每個區段都可以使用非重疊位置形成至少 2 對

oavoservice 滿分解法

from collections import Counter

def solution(fruits, k):
    n = len(fruits)
    count = 0
    
    for i in range(n):
        freq = Counter()
        pairs = 0
        for j in range(i, n):
            fruit = fruits[j]
            freq[fruit] += 1
            # 當頻次變為偶數時,形成一對
            if freq[fruit] % 2 == 0:
                pairs += 1
            
            if pairs >= k:
                count += 1
    
    return count

核心考點: 滑動視窗 + 頻次統計 + 配對計數


✅ 題目 4:Magical Number Pairs(魔法數字配對)

題目描述

在一個數字擁有魔力的世界裡,有一顆具有獨特屬性的魔法寶石。這顆寶石可以通過交換不超過兩個數字來將一個數字神奇地轉換為另一個數字。

給定一個陣列 numbers,確定存在多少個不同的配對 (i, j),滿足 0 ≤ i < j < numbers.length,且配對中的一個數字可以通過交換最多兩個數位轉換為另一個數字。

注意: 如果兩個數字已經相等(不需要交換),它們仍然算作魔法配對。

範例

輸入: numbers = [1, 23, 156, 1650, 651, 165, 32]
輸出: 3

解釋:
- 23 ↔ 32 (交換 2 個數位)
- 156 ↔ 651 (交換 1 和 6)
- 156 ↔ 165 (交換 5 和 6)

oavoservice 滿分解法

def solution(numbers):
    def can_transform(a, b):
        s1, s2 = str(a), str(b)
        if len(s1) != len(s2):
            return False
        
        diffs = [(c1, c2) for c1, c2 in zip(s1, s2) if c1 != c2]
        
        # 相等或交換一對
        if len(diffs) == 0:
            return True
        if len(diffs) == 2:
            return diffs[0] == diffs[1][::-1]
        return False
    
    count = 0
    n = len(numbers)
    for i in range(n):
        for j in range(i + 1, n):
            if can_transform(numbers[i], numbers[j]):
                count += 1
    
    return count

核心考點: 字串比較 + 差異位置分析


✅ 題目 5:Distribute and Merge Arrays(分配與合併陣列)

題目描述

給定一個整數陣列 numbers,使用以下規則將所有元素分配到兩個陣列 firstsecond

  1. numbers[0]first
  2. numbers[1]second
  3. 對於所有 i > 1,將 numbers[i] 放入嚴格大於 numbers[i] 的元素更多的陣列中
  4. 如果平局:放入較短的陣列
  5. 仍然平局?放入 first

最後,返回將 second 追加到 first 後形成的陣列。

範例

輸入: numbers = [5, 7, 6, 9, 2]
輸出: [5, 9, 2, 7, 6]

oavoservice 滿分解法

def solution(numbers):
    if len(numbers) == 0:
        return []
    if len(numbers) == 1:
        return numbers
    
    first = [numbers[0]]
    second = [numbers[1]]
    
    for i in range(2, len(numbers)):
        num = numbers[i]
        
        # 統計大於 num 的元素數量
        count_first = sum(1 for x in first if x > num)
        count_second = sum(1 for x in second if x > num)
        
        if count_first > count_second:
            first.append(num)
        elif count_second > count_first:
            second.append(num)
        elif len(first) <= len(second):
            first.append(num)
        else:
            second.append(num)
    
    return first + second

核心考點: 模擬 + 條件判斷優先級


✅ 題目 6:Alternating Parity Pattern(交替奇偶模式)

題目描述

如果一個陣列不包含兩個連續的相同奇偶性數字(奇/奇 或 偶/偶),則認為該陣列遵循交替奇偶模式。

給定一個非負整數陣列 numbers,返回打破交替奇偶模式的第一個元素的索引。如果模式從未被打破,返回 -1。

範例

輸入: numbers = [1, 2, 5, 3, 6]
輸出: 3
解釋: 5 和 3 都是奇數

輸入: numbers = [1, 4, 7, 2, 5, 6]
輸出: -1
解釋: 模式從未被打破

oavoservice 滿分解法

def solution(numbers):
    for i in range(1, len(numbers)):
        if numbers[i] % 2 == numbers[i-1] % 2:
            return i
    return -1

核心考點: 簡單遍歷 + 奇偶判斷


💡 為什麼找 oavoservice?

這套 Uber OA 題目覆蓋了多種經典演算法:

  1. 模擬題 - Q1, Q5 考察狀態轉換和條件判斷
  2. 字串處理 - Q2, Q4 考察格式化和字元比較
  3. 滑動視窗 - Q3 考察區間統計
  4. 基礎遍歷 - Q6 考察簡單邏輯

🚀 oavoservice:你的滿分通關保障

我們長期穩定承接各大科技公司如 Uber、TikTok、Google、Amazon、Microsoft、Meta 等的 OA 筆試代寫服務,確保滿分通過。

黑科技加持: 無視攝影機、共享螢幕、AI 監考檢測

全棧覆蓋: 熟悉所有主流 OA 平台

即時響應: 7x24 小時線上,隨時待命

滿分保障: 專業演算法團隊,100% 通過率

We consistently provide professional online assessment services for major tech companies like TikTok, Google, and Amazon, guaranteeing perfect scores. Feel free to contact us if you're interested.

📩 如有需求,請隨時聯繫我們。

👉 立即添加微信:Coding0201

鎖定你的 Uber 面試機會!