สมมติว่าเรามีรายการที่เรียงลำดับ A เราต้องคืนค่าความยาวของอาร์เรย์หลังจากลบรายการที่ซ้ำกันทั้งหมด เราต้องทำสิ่งนี้ในพื้นที่พิเศษ O (1) เราจึงต้องดำเนินการแทน
ตัวอย่างเช่น สมมติว่า A =[1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6] จากนั้นผลลัพธ์จะเป็น 6 เนื่องจากมีองค์ประกอบที่แตกต่างกันหกตัว
เพื่อแก้ปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้ -
- หากรายการว่างเปล่า ให้คืนค่า 0
- มิฉะนั้น เริ่มแรกใช้ prev =องค์ประกอบแรกของ A และกำหนดความยาว =0
- สำหรับ i :=1 ถึง n-1 ทำ
- ถ้า A[i] ไม่เหมือนกับก่อนหน้า แล้ว
- ยาว :=ยาว + 1
- ก่อนหน้า :=A[i]
- ถ้า A[i] ไม่เหมือนกับก่อนหน้า แล้ว
- ความยาวคืน
ให้เราดูการนำไปใช้เพื่อความเข้าใจที่ดีขึ้น
ตัวอย่าง (Python)
คลาส Solution(object):def removeDuplicates(self, nums):""" :type nums:List[int] :rtype:int """ if len(nums) ==0:return 0 length =1 Previous =nums[0] index =1 for i in range(1,len(nums)):if nums[i] !=Previous:length +=1 Previous =nums[i] nums[index] =nums[i] index+ =1 ส่งคืน lengthinput_list =[1,1,2,2,2,3,3,3,3,4,5,5,5,6]ob1 =Solution()print(ob1.removeDuplicates(input_list))ก่อน>อินพุต
[1,1,2,2,2,3,3,3,3,4,5,5,5,6]ผลลัพธ์
6