อัลกอริทึม: วิธีที่มีประสิทธิภาพในการลบจำนวนเต็มที่ซ้ำกันออกจากอาร์เรย์
ฉันได้รับปัญหานี้จากการสัมภาษณ์กับ Microsoft ให้อาร์เรย์ของจำนวนเต็มสุ่มเขียนอัลกอริทึมใน C ที่ลบตัวเลขที่ซ้ำกันและส่งกลับตัวเลขที่ไม่ซ้ำกันในอาร์เรย์เดิม เช่นอินพุต: {4, 8, 4, 1, 1, 2, 9} เอาต์พุต:{4, 8, 1, 2, 9, ?, ?} ข้อแม้อย่างหนึ่งคืออัลกอริทึมที่คาดไว้ไม่ควรกำหนดให้เรียงลำดับอาร์เรย์ก่อน และเมื่อนำองค์ประกอบออกแล้วองค์ประกอบต่อไปนี้จะต้องเลื่อนไปข้างหน้าเช่นกัน อย่างไรก็ตามค่าขององค์ประกอบที่หางของอาร์เรย์ซึ่งองค์ประกอบถูกเลื่อนไปข้างหน้านั้นมีความสำคัญเล็กน้อย อัปเดต:ผลลัพธ์จะต้องถูกส่งคืนในอาร์เรย์ดั้งเดิมและไม่ควรใช้โครงสร้างข้อมูลตัวช่วย (เช่นแฮชแท็ก) อย่างไรก็ตามฉันเดาว่าไม่จำเป็นต้องเก็บรักษาคำสั่งซื้อ Update2:สำหรับผู้ที่สงสัยว่าเหตุใดจึงมีข้อ จำกัด ที่ทำไม่ได้นี่เป็นคำถามสัมภาษณ์และจะมีการพูดถึงข้อ จำกัด เหล่านี้ในระหว่างกระบวนการคิดเพื่อดูว่าฉันจะคิดอย่างไร