0Pricing
Coding Interview Prep · บทเรียน

ตัวชี้สองตัวบนอาร์เรย์ที่เรียงแล้ว

เลื่อนปลายทั้งสองเข้าหากันเพื่อพบเป้าหมาย

ตัวชี้สองตัวบนอาร์เรย์ที่เรียงแล้ว เป็นบทเรียน Coding Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Coding Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน

เหตุผลที่ใช้ตัวชี้สองตัว

เทคนิค ตัวชี้สองตัว จะสแกนอาร์เรย์ด้วยดัชนีสองตัวแทนการใช้ลูปซ้อน ทำให้แนวคิด O(n^2) หลายแบบกลายเป็นการประมวลผล O(n) เพียงรอบเดียวที่เป็นระเบียบ 🎯

คำว่าเรียงลำดับแล้วคือหัวใจสำคัญ

รูปแบบคลาสสิกต้องใช้อาร์เรย์ที่ เรียงลำดับแล้ว การเรียงลำดับช่วยให้เหตุผลได้ว่า การเลื่อนไปทางขวาทำให้ค่ามากขึ้น ส่วนการเลื่อนไปทางซ้ายทำให้ค่าน้อยลง ดังนั้นแต่ละขั้นตอนจึงเป็นการตัดสินใจที่มีความหมาย

ตัวชี้สองตัวที่ปลายทั้งสองด้าน

เริ่มต้นตัวชี้หนึ่งตัวที่ ปลายด้านซ้าย และอีกตัวที่ปลายด้านขวา ตัวชี้ทั้งสองจะหันเข้าหากันและค่อย ๆ ลดระยะห่างระหว่างกัน

left = 0
right = len(a) - 1

เลื่อนจากปลายเข้าด้านใน

ในแต่ละขั้นตอน ให้ เลื่อนตัวชี้เข้าด้านในเพียงหนึ่งตัว ลำดับของอาร์เรย์จะบอกว่าควรขยับด้านใดเพื่อเข้าใกล้เป้าหมายมากขึ้น

เงื่อนไขของลูป

วนซ้ำต่อไปตราบใดที่ left < right เมื่อทั้งสองตัวชี้มาบรรจบกันหรือข้ามกัน แสดงว่าได้ตรวจสอบคู่ที่มีประโยชน์ครบแล้ว และสามารถหยุดได้

while left < right:
    # inspect a[left] and a[right]
    pass

อ่านผลรวมปัจจุบัน

พิจารณา a[left] + a[right] เป็นค่าผู้สมัครปัจจุบัน การเปรียบเทียบค่านี้กับเป้าหมายจะบอกว่าขั้นถัดไปต้องการค่าที่มากขึ้นหรือน้อยลง

total = a[left] + a[right]

น้อยเกินไป: เลื่อนด้านซ้าย

หากผลรวมต่ำกว่าเป้าหมาย คุณต้องการค่าที่ มากขึ้น ให้เลื่อนตัวชี้ด้านซ้ายไปทางขวาเพื่อไปยังค่าที่มากขึ้น เนื่องจากอาร์เรย์เรียงจากน้อยไปมาก

if total < target:
    left += 1

มากเกินไป: เลื่อนด้านขวา

หากผลรวมสูงกว่าเป้าหมาย คุณต้องการค่าที่ น้อยลง ให้เลื่อนตัวชี้ด้านขวาไปทางซ้ายเพื่อไปยังค่าที่น้อยลงและลดผลรวม

elif total > target:
    right -= 1

แต่ละขั้นตอนตัดงานทิ้ง

การเลื่อนแต่ละครั้งจะ ตัดทิ้งคู่ค่าจำนวนมากที่ไม่จำเป็นต้องตรวจสอบอีก นี่คือเหตุผลที่การสแกนใช้เวลาเชิงเส้นแทนเวลาเชิงกำลังสอง

เหตุผลที่วิธีนี้ถูกต้องเสมอ

คุณตัดทิ้งเฉพาะคู่ค่าที่ ไม่สามารถตรงกันได้เท่านั้น จึงไม่มีทางข้ามคำตอบที่ถูกต้อง ความปลอดภัยนี้ทำให้ตัวชี้สองตัวเป็นวิธีที่เชื่อถือได้ในการแข่งขัน

มากกว่าการดูที่ปลายอาร์เรย์

แนวคิดเดียวกันนี้ใช้กับ รูปแบบประยุกต์ เช่น การกลับลำดับภายในอาร์เรย์ การแบ่งส่วน และการผสาน เมื่อเข้าใจตัวชี้ที่เคลื่อนเข้าหากันแล้ว แนวคิดเหล่านี้จะคุ้นเคยขึ้นมาก

ตรวจสอบอย่างรวดเร็ว

คุณกำลังสแกนอาร์เรย์ที่เรียงลำดับแล้วจากปลายทั้งสองด้านเพื่อหาผลรวมเป้าหมาย

สรุปทบทวน

ตัวชี้สองตัวจะกวาดผ่านอาร์เรย์ที่ เรียงลำดับแล้วจากปลายทั้งสองด้าน โดยเลื่อนเข้าด้านในทีละตัวตราบใดที่ left < right ใช้เวลาเชิงเส้น ถูกต้อง และเป็นพื้นฐานของเทคนิคอีกมากมาย 🚀

คำถามที่พบบ่อย

บทเรียน “ตัวชี้สองตัวบนอาร์เรย์ที่เรียงแล้ว” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวชี้สองตัวบนอาร์เรย์ที่เรียงแล้ว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Coding Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวชี้สองตัวบนอาร์เรย์ที่เรียงแล้ว”

เลื่อนปลายทั้งสองเข้าหากันเพื่อพบเป้าหมาย คุณปฏิบัติ Coding Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Coding Interview Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Coding Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ตัวชี้สองตัวบนอาร์เรย์ที่เรียงแล้ว” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Coding Interview Prep นี้ได้ไหม

ได้ บทเรียน Coding Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ตัวชี้สองตัวบนอาร์เรย์ที่เรียงแล้ว
  2. ค้นหาคู่ที่มีผลรวมกำหนด
  3. ลบค่าซ้ำในตำแหน่งเดิม
  4. ผสานลำดับที่เรียงแล้วสองชุด
← กลับไปที่ Coding Interview Prep