سوال 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;
}
}