DEV Community

prem Prema
prem Prema

Posted on

check Deplicate value - II

Example 1:

Input: nums = [1,2,3,1], k = 3
Output: true

k வின் மதிப்பை வைத்து nums வரிசையை(Array) ஒவ்வொரு பகுதிவரிசையாக (Subarray) பிரிக்க வேண்டும்.
பிறகு அந்த பகுதி வரிசையில் மீண்டும் வரும் (duplicate) மதிப்பு இருக்கிறதா என்று பார்க்க வேண்டும்.

அங்கே duplicate மதிப்பு இருந்தால் உடனே true return செய்ய வேண்டும்.

இல்லையென்றால் அடுத்த பகுதி வரிசையை பிரித்து மீண்டும் சரிபார்க்க வேண்டும்.
எந்த பகுதியிலும் duplicate இல்லை என்றால் கடைசியில் false return செய்ய வேண்டும்.

*எப்படி Arrayவை பகுதி வரிசையாக (sub Array) பிரிப்பது?
*

முதலில் தொடங்குவதால், index 0-இல் தொடங்க வேண்டும்.
அதில் இருந்து k = 3, எனவே 0 + 3 = 3.

👉 முடிவு index = 3
இதனால் கிடைப்பது:

தொடக்கம் index = 0
முடிவு index = 3
👉 0 முதல் 3 வரை ஒரு பகுதி கிடைக்கும்.

இந்த Array-வில் 3-வது index வரைதான் இருப்பதால், இதில் ஒரு subarray மட்டும் பிரிக்க முடியும்.

Nums  : [ 1,   2,   3,   1 ]
Index : (0)   (1)  (2)  (3)
          └───────────────┘
          start=0      end=3
          Window 1 → {1, 2, 3, 1}

Subarray: {1, 2, 3, 1}
Enter fullscreen mode Exit fullscreen mode

2 – நகல் (டூப்ளிகேட்) மதிப்பு இருக்கிறதா என்று எப்படி பார்க்க வேண்டும்?

முதலில் 0வது இடத்தில் (index) உள்ள எண்ணை எடுத்துக்கொள்ள வேண்டும்.
அதை அதற்கு அடுத்தடுத்து உள்ள மற்ற எண்களுடன் ஒப்பிட்டு பார்க்க வேண்டும்.

Step 1 – ஆரம்ப மதிப்பு எடு

Index 0 → Value = 1

1 == 2 ❌

1 == 3 ❌

1 == 1 ✅ → சமம் duplicate கிடைத்துவிட்டது.
"ஒவ்வொரு எண்களாகச் சரிபார்த்து முடித்தோம். இப்போது அந்த எண்களுக்கு தொடர்பான index மதிப்பையும் பொருத்திப் பார்க்கலாம்."

1 == 2 → nums[0] == nums[1] ❌

1 == 3 → nums[0] == nums[2] ❌

1 == 1 → nums[0] == nums[3] ✅

Index 0 மற்றும் 3 ல் உள்ள மதிப்பு ஒன்று.

அதனால் Duplicate கண்டுபிடிக்கப்பட்டது → true return செய்ய வேண்டும் ✅

=======================================
அடுத்து ஒரு உதாரணம் பார்க்கலாமா?
Example 2:

Input: nums = [1,0,1,1], k = 1
Output: true

இப்போது என்ன செய்ய வேண்டும்?

1- பகுதி வரிசையாக (Subarray) பிரிக்க வேண்டும்.
2- மீண்டும் வரும் (duplicate) மதிப்பு இருக்கிறதா என்று பார்க்க வேண்டும்.

பகுதி வரிசையாக பிரிக்கலாமா ?

தொடக்கம் index = 0 , இதை k ன் மதிப்போடு கூட்ட வேண்டும 0+1 = 1

முடிவு index = 1


Nums :  [ 1,  0,  1,  1 ]
Index:   (0) (1) (2) (3)
          └───┘
    start=0  end=1
Window = {1,0}

Enter fullscreen mode Exit fullscreen mode

*நகல் (டூப்ளிகேட்) மதிப்பு இருக்கிறதா என பார்க்கலாமா?
*

Step 1 – ஆரம்ப மதிப்பு எடு
Index 0 → Value = 1

1 == 0 இல்லை

இந்தப் பகுதியில் duplicate இல்லை அதனால் அடுத்த பகுதியை பிரிக்கலாம்.

subArray - 2

இப்பொழுது தொடக்க index இதற்கு முன்னாடி உள்ள இன்டெக்ஸ் விட 1 ஒன்று அதிகமாக இருக்க வேண்டும்
தொடக்கம் index = 0

தொடக்கம் index = தொடக்கம் index + 1

= 0 + 1
= 1

முடிவு இன்டெக்ஸ் கண்டுபிடிக்க தெரியுமா ?

தெரியுமே, தொடக்க index லிருந்து kயின் மதிப்பை கூட்டினால் முடிவு இண்டெக்ஸ் கிடைக்கும்

முடிவு index = தொடக்கம் index + k

= 1 + 1

= 2

ஆக, தொடக்கம் index = 1

முடிவு index = 2


Nums : [ 1, 0, 1, 1 ]

Index: (0) (1) (2) (3)

            └──┘

  start=1 end=2
Window = {0,1}
Enter fullscreen mode Exit fullscreen mode

எண்கள் சமமாக இருக்கிறதா என்ன பார்க்கலாம்

0==1

// இங்கே சமமாக இல்லை அதனால் அடுத்த பகுதியை உருவாக்கலாம்

subArray - 3

இப்போ தொடக்க இன்டெக்ஸ் கண்டுபிடிக்க தெரியுமா?
தெரியுமா, முன்னாடி உள்ள தொடக்க இன்டெக்ஸ் ஒன்று கூடுதல் செய்ய வேண்டும்
அப்படி செய்தால்,
தொடக்கம் index = 2
முடிவு index = 3

Nums :[ 1,  0,  1,  1 ]
Index: (0) (1) (2) (3)
                └──┘
  start=2 end=3
Window = {1,1}
Enter fullscreen mode Exit fullscreen mode

1==1 // இப்போது இரண்டு மதிப்புகளும் சமமாக இருப்பதால் true திருப்பி அனுப்பலாம்

Top comments (0)