Remove Duplicates from Sorted Array
Kamaymaslik tartibida nums tartiblangan butun sonli massivni hisobga olsak, har bir noyob element faqat bir marta paydo bo'lishi uchun dublikatlarni joyida olib tashlang. Elementlarning nisbiy tartibi bir xil saqlanishi kerak. Keyin noyob elementlar sonini nums bilan qaytaring.
numsning noyob elementlari soni k bo'lishini ko'rib chiqing, qabul qilish uchun siz quyidagi amallarni bajarishingiz kerak:
Massiv
numsni shunday o'zgartiringki,numsning birinchikelementi dastlabnumsda mavjud bo'lgan tartibda noyob elementlarni o'z ichiga oladi.numsning qolgan elementlari raqamlarning kattaligi kabi muhim emas.kni qaytaring.
Sudya sizning yechimingizni quyidagi kod bilan sinab ko'radi:
int[] nums = [...]; // Input array
int[] expectedNums = [...]; // The expected answer with correct length
int k = removeDuplicates(nums); // Calls your implementation
assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}Agar barcha tasdiqlar o'tib ketsa, sizning yechimingiz qabul qilinadi.
Example 1:
Input: nums = [1,1,2]
Output: 2, nums = [1,2,_]
Explanation: Sizning funktsiyangiz k = 2 ni qaytarishi kerak, sonlarning birinchi ikkita elementi mos ravishda 1 va 2 bo'ladi.
Qaytarilgan k dan keyin nima qoldirganingiz muhim emas (shuning uchun ular pastki chiziq).Example 2:
Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4,_,_,_,_,_]
Explanation: Sizning funktsiyangiz k = 5 ni qaytarishi kerak, sonlarning birinchi besh elementi mos ravishda 0, 1, 2, 3 va 4.
Qaytarilgan k dan keyin nima qoldirganingiz muhim emas (shuning uchun ular pastki chiziq)..Cheklovlar:
1 <= nums.length <= 3 * 10^4-100 <= nums[i] <= 100numsis sorted in non-decreasing order.
Hint-1
Ushbu muammoda e'tibor berish kerak bo'lgan asosiy nuqta - tartiblangan kirish massivi. Ikki nusxadagi elementlarga kelsak, berilgan massiv tartiblanganda ularning massivdagi joylashuvi qanday? Javob uchun yuqoridagi rasmga qarang. Agar biz elementlardan birining o'rnini bilsak, barcha takrorlanuvchi elementlarning joylashishini ham bilamizmi?
Hint-2
Biz massivni joyida o'zgartirishimiz kerak va yakuniy massivning o'lchami kirish massivining o'lchamidan kichikroq bo'lishi mumkin. Demak, bu yerda ikki nuqtali yondashuvdan foydalanishimiz kerak. Birinchisi, bu asl massivdagi joriy elementni, ikkinchisi esa faqat noyob elementlarni kuzatib boradi.
Hint-3
Aslida, biror elementga duch kelganingizdan so'ng, siz uning dublikatlarini chetlab o'tib, keyingi noyob elementga o'tishingiz kerak.
func removeDuplicates(nums []int) int {
k := 0
for i := 1; i < len(nums); i++ {
if nums[i] != nums[k] {
k++
nums[k] = nums[i]
}
}
return k+1
}© Leetcode link
Last updated
Was this helpful?
