iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
佛心分享-刷題不只是刷題

只是單純想刷題XD系列 第 26

只是單純想刷題XD Day26

  • 分享至 

  • xImage
  •  

題目

https://ithelp.ithome.com.tw/upload/images/20241008/20160320c2E8XbKmpz.jpg

題目翻譯

給定一個排序數組,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。

解題步驟

  1. 處理邊界情況

    • 如果 nums 為空,直接返回長度 0,因為沒有元素可移除。
  2. 遍歷陣列

    • 使用變數 uniqueIndex 來記錄不重複元素的最後一個位置。
    • 從第二個元素開始遍歷,與前一個元素比較。
    • 如果當前元素與前一個元素不同,則將該元素放到 uniqueIndex 位置,並將 uniqueIndex 向前移動一位。
  3. 返回結果

    • 最後 uniqueIndex 的值即為不重複元素的總數,返回它作為新陣列的長度。

code

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if (nums.empty()) return 0;  // 如果陣列為空,直接返回 0
        
        int uniqueIndex = 1;  // 記錄不重複元素的最後一個位置
        for (int i = 1; i < nums.size(); ++i) {
            // 當遇到不重複的元素時,將它放到 uniqueIndex 位置
            if (nums[i] != nums[i - 1]) {
                nums[uniqueIndex] = nums[i];
                ++uniqueIndex;  // 更新 uniqueIndex
            }
        }
        return uniqueIndex;  // 返回不重複元素的長度
    }
};

上一篇
只是單純想刷題XD Day25
下一篇
只是單純想刷題XD Day27
系列文
只是單純想刷題XD30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言