面試經驗
台灣積體電路製造股份有限公司(台積電) TSMC SOFTWARE
新竹縣 | 錄取 | 面試時間2023.03 | 職務經驗2 年 |
薪水月薪 5萬 | 評分4.5分 |
面試官專業度
/**
* ----------------------------------------------------------------------------------
* 📝 題目敘述 (Problem Description)
* ----------------------------------------------------------------------------------
* LeetCode 1. Two Sum (兩數之和)
* 給定一個整數陣列 nums 和一個目標值 target,
* 請你在該陣列中找出和為 target 的那兩個整數,並回傳它們的陣列索引 (Index)。
* ----------------------------------------------------------------------------------
* Note: The returned array must be malloced, assume caller calls free().
* ----------------------------------------------------------------------------------
*//*
* ----------------------------------------------------------------------------------
* 💡 答案、記法與講法 (Solution, Notes, and Explanation)
* ----------------------------------------------------------------------------------
*/
#include <stdlib.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
// 1. 設定回傳陣列的大小
// LeetCode 的 C 語言介面要求我們透過指標 *returnSize 告訴呼叫者我們回傳了幾個數字。
// 題目保證一定有解且為兩個數字,所以這裡設為 2。
*returnSize = 2;
// 2. 配置記憶體
// 題目要求回傳的陣列必須是 malloc 出來的 (Heap Memory),
// 這樣離開函式後,陣列才不會消失。
int *result = (int*)malloc(2 * sizeof(int));
if (result == NULL) return NULL; // 安全檢查
// 3. 雙重迴圈搜尋 (Brute Force)
// 外層迴圈 i:代表第一個數字的位置
for (int i = 0; i < numsSize; i++) {
// 內層迴圈 j:代表第二個數字的位置
// j 從 i + 1 開始,避免重複計算自己 (i != j) 且避免重複組合。
for (int j = i + 1; j < numsSize; j++) {
// 4. 判斷是否符合目標
// 如果 陣列[i] + 陣列[j] 等於 target
if (nums[i] + nums[j] == target) {
result[0] = i;
result[1] = j;
return result; // 找到答案直接回傳
}
}
}
// 題目保證一定有解,所以理論上程式不會執行到這裡,
// 但為了語法完整性,若沒找到回傳 NULL。
return NULL;
}
/*
工時狀況
/**
* ----------------------------------------------------------------------------------
* 📝 題目敘述 (Problem Description)
* ----------------------------------------------------------------------------------
* LeetCode 1. Two Sum (兩數之和)
* 給定一個整數陣列 nums 和一個目標值 target,
* 請你在該陣列中找出和為 target 的那兩個整數,並回傳它們的陣列索引 (Index)。
* ----------------------------------------------------------------------------------
* Note: The returned array must be malloced, assume caller calls free().
* ----------------------------------------------------------------------------------
*//*
* ----------------------------------------------------------------------------------
* 💡 答案、記法與講法 (Solution, Notes, and Explanation)
* ----------------------------------------------------------------------------------
*/
#include <stdlib.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
// 1. 設定回傳陣列的大小
// LeetCode 的 C 語言介面要求我們透過指標 *returnSize 告訴呼叫者我們回傳了幾個數字。
// 題目保證一定有解且為兩個數字,所以這裡設為 2。
*returnSize = 2;
// 2. 配置記憶體
// 題目要求回傳的陣列必須是 malloc 出來的 (Heap Memory),
// 這樣離開函式後,陣列才不會消失。
int *result = (int*)malloc(2 * sizeof(int));
if (result == NULL) return NULL; // 安全檢查
// 3. 雙重迴圈搜尋 (Brute Force)
// 外層迴圈 i:代表第一個數字的位置
for (int i = 0; i < numsSize; i++) {
// 內層迴圈 j:代表第二個數字的位置
// j 從 i + 1 開始,避免重複計算自己 (i != j) 且避免重複組合。
for (int j = i + 1; j < numsSize; j++) {
// 4. 判斷是否符合目標
// 如果 陣列[i] + 陣列[j] 等於 target
if (nums[i] + nums[j] == target) {
result[0] = i;
result[1] = j;
return result; // 找到答案直接回傳
}
}
}
// 題目保證一定有解,所以理論上程式不會執行到這裡,
// 但為了語法完整性,若沒找到回傳 NULL。
return NULL;
}
/*
面試過程曾問以下問題
- 詢問家庭狀況
沒有回報記錄
更多台灣積體電路製造股份有限公司(台積電) TSMC、SOFTWARE的面試及評價...
詳細給推
感謝大大無私分享
蒸的很蚌
真的非常謝謝你的分享!
很實用!
台灣的職場因為有你變得更好!