سوال 26

عنوان سوال : Remove Duplicates from Sorted Array

  • آسان
  • دو اشاره گر
  • آرایه

یک آرایهٔ عدد صحیح nums داده شده که به‌صورت صعودی (non-decreasing) مرتب شده است.
باید تکراری‌ها را درجا (in-place) حذف کنید، به‌طوری‌که هر عنصر منحصربه‌فرد فقط یک‌بار در آرایه باقی بماند.
ترتیب عناصر نیز باید حفظ شود.

پس از حذف تکراری‌ها، تعداد عناصر منحصربه‌فرد را k بنامید.
تابع باید k را برگرداند.

  • عناصر منحصربه‌فرد باید در k عنصر اول آرایه قرار بگیرند.
  • بقیهٔ عناصر بعد از اندیس k - 1 اهمیتی ندارند و می‌توانند هر مقداری داشته باشند.

مثال ۱

ورودی:
nums = [1,1,2]

خروجی:
k = 2
nums = [1,2,_]

توضیح:
دو مقدار منحصربه‌فرد 1 و 2 هستند.
مقادیر بعد از اندیس 1 اهمیتی ندارند.


مثال ۲

ورودی:
nums = [0,0,1,1,1,2,2,3,3,4]

خروجی:
k = 5
nums = [0,1,2,3,4,_,_,_,_,_]

توضیح:
پنج مقدار منحصربه‌فرد: 0,1,2,3,4


محدودیت‌ها

  • 1 <= nums.length <= 3 * 10^4
  • -100 <= nums[i] <= 100
  • آرایه به‌صورت صعودی مرتب شده است.

راه حل

public class Solution {
    public int RemoveDuplicates(int[] nums) {
        if (nums == null || nums.Length == 0)
            return 0;

        var uniqueCount = 1;

        for (var i = 1; i < nums.Length; i++)
        {
            if (nums[i] != nums[uniqueCount - 1])
            {
                nums[uniqueCount] = nums[i];
                uniqueCount++;
            }
        }

        return uniqueCount;
    }
}

کپی رایت © mhkarami97