iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
Kotlin

破解 Android 工程師面試白板題:30 道面試題目與解答 系列

想成為一名優秀的 Android 工程師,卻在面試時被白板題難倒?想學習用 Kotlin 解決各種資料結構與演算法的問題,並提升你的面試技巧?

本系列將帶你一起練習 30 道 Android 面試高頻題,教你如何寫出清晰、高效的程式碼。這些題目都是我從國內外知名軟體公司,如 PayPay、LinePay 等,收集整理而來。

你將學習如何拆解問題,分析時間和空間複雜度,並運用適當的解題策略。本系列涵蓋了各種基礎和進階的題型,讓你能夠應付任何面試挑戰。

不要再讓白板題嚇跑你,快來加入本系列,讓自己成為一名更優秀的 Android 工程師吧!

鐵人鍊成 | 共 30 篇文章 | 7 人訂閱 訂閱系列文 RSS系列文 團隊捲土重來的Kotlin鐵人們
DAY 1

LeetCode 509. Fibonacci Number

方法一:動態規劃 (DP) 解題思路 費波那契數列的定義是 ,,並且 對於任意 成立。 這個遞迴關係可以用動態規劃來實現,只需要記錄 和 作為初始值,...

2023-09-15 ‧ 由 John Lu 分享
DAY 2

LeetCode 234. Palindrome Linked List

方法一:複製到陣列後使用雙指標法 解題思路 有兩種常見的 List 實作方式,分別是 ArrayList 和 LinkedList。它們在存儲值的方法上有什麼...

2023-09-16 ‧ 由 John Lu 分享
DAY 3

LeetCode 1. Two Sum

方法一:暴力窮舉 解題思路 一個直覺的想法是,對陣列中的每個數字 x,檢查是否有另一個數字等於 target - x。 為了避免重複配對,我們只需在陣列中,位...

2023-09-17 ‧ 由 John Lu 分享
DAY 4

LeetCode 232. Implement Queue using Stacks

方法一:雙堆疊 解題思路 我們使用兩個 stack 來模擬一個 queue 的操作。 一個 stack 叫做 input stack,用來存放新加入的資料。另...

2023-09-18 ‧ 由 John Lu 分享
DAY 5

LeetCode 2. Add Two Numbers

方法一:模擬加法 解題思路 兩個鏈結串列的數字是從個位開始存儲的,所以我們可以直接按位相加。 我們同時遍歷兩個鏈結串列,把每一位的數字和進位值相加,得到當前位...

2023-09-19 ‧ 由 John Lu 分享
DAY 6

LeetCode 1971. Find if Path Exists in Graph

破題 這道題目要求我們判斷是否存在從起點到終點的有效路徑。這可以轉化為求圖中兩個頂點是否連通的問題。我們可以使用廣度優先搜尋 (BFS)、深度優先搜尋 (DF...

2023-09-20 ‧ 由 John Lu 分享
DAY 7

LeetCode 110. Balanced Binary Tree

破題 這道題目中的平衡二元樹定義為:二元樹中每個節點的左右子樹高度差的絕對值不超過1。根據定義,一棵二元樹是平衡二元樹,當且僅當其所有子樹也都是平衡二元樹。因...

2023-09-21 ‧ 由 John Lu 分享
DAY 8

LeetCode 98. Validate Binary Search Tree

方法一:遞迴 解題思路 這道題目要求我們判斷一棵二元樹是否是二元搜尋樹。 二元搜尋樹的特性是,對於任意一個節點,它的左子樹上所有節點的值都小於它,而它的右子樹...

2023-09-22 ‧ 由 John Lu 分享
DAY 9

LeetCode 108. Convert Sorted Array to Binary Search Tree

破題 首先,我們知道二元搜尋樹的一個重要特性是其中序走訪結果為遞增序列。因此,如果我們得到一個遞增陣列,我們可以確定這個陣列可以作為某個二元搜尋樹的中序走訪結...

2023-09-23 ‧ 由 John Lu 分享
DAY 10

LeetCode 102. Binary Tree Level Order Traversal

方法一:廣度優先搜尋 (BFS) 解題思路 我們可以使用廣度優先搜尋來解決這個問題。最簡單的方法是使用一個 Pair (node, level) 來表示狀態,...

2023-09-24 ‧ 由 John Lu 分享