iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
Software Development

用leetcode系統化學習C語言系列 第 27

指標排序與邏輯思維訓練

  • 分享至 

  • xImage
  •  

我們練習過用指標處理數字、回傳新陣列。這篇我們要來挑戰「指標 + 排序」的組合。

🧩LeetCode 2418 — Sort the People 題目說明
給定兩個陣列 names 和 heights,
每個人名字在 names[i],身高在 heights[i]。
請依照身高由高到低的順序輸出對應的名字。
範例如下
輸入:
names = ["Mary","John","Emma"]
heights = [180,165,170]
輸出:
["Mary","Emma","John"]

🧠 解題思路
1️⃣ 理解資料結構
這題其實是「同步排序」問題,names[i] 與 heights[i] 是一組,要同時交換位置。
2️⃣ 選擇排序 + 指標操作
我們可用最直觀的 selection sort:逐一找出最大值,然後與目前位置交換。這次不直接用 names[i],而是用 (names + i) 的寫法操作。
3️⃣ 用指標交換字串與整數
交換整數很好處理,但交換字串時要記得它本身是指標(char
),因此只需交換指標位址,而不是複製整個字串。
https://ithelp.ithome.com.tw/upload/images/20251011/201694891qXdToIxKx.png
https://ithelp.ithome.com.tw/upload/images/20251011/20169489kvmL7bZPiX.png

✨ 學習心得
這題讓我深刻體會到「指標就是靈活的搬運工」:它可以搬整數,也能搬字串;而交換的只是一段記憶體位址,而非整個內容。
練到的重點包括:
1.如何同時操作多個不同型態的指標
2.排序時維持多陣列對應的正確性
3.理解「字串陣列」其實是 char**


上一篇
不動頭指標刪除鏈結串列中的節點
下一篇
指標進階 — 操作鏈結串列的中階技巧
系列文
用leetcode系統化學習C語言30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言