บทนำ
ตามคำจำกัดความตัวระบุที่ไม่ซ้ำกันควรไม่ซ้ำกัน การมีตัวระบุหลายตัวที่เหมือนกันจะทำให้เกิดการดึงข้อมูลที่ไม่คาดคิด แต่ด้วยข้อมูลที่มาพร้อมกันจากหลาย ๆ แหล่งจึงเป็นเรื่องยากที่จะรับประกันความเป็นเอกลักษณ์ เขียนฟังก์ชั่นที่ไม่ซ้ำรายการของตัวระบุ
นี่อาจเป็นปริศนาตัวต่อที่แย่ที่สุดที่ฉันเคยเขียน แต่คุณก็เข้าใจ
ความต้องการ
ให้รายการของจำนวนเต็มบวกศูนย์หรือมากกว่าให้ใช้กฎต่อไปนี้กับแต่ละหมายเลขตั้งแต่แรกถึงสุดท้าย:
- หากหมายเลขเป็นหมายเลขแรกให้เก็บไว้
- หากพบหมายเลขก่อนหน้านี้ให้แทนที่ด้วยจำนวนเต็มบวกต่ำสุดที่ไม่พบที่ใดก็ได้ในรายการอินพุตทั้งหมดหรือเอาต์พุตใด ๆ ที่มีอยู่
สำหรับการแก้ปัญหา:
- วิธีแก้ปัญหาอาจเป็นโปรแกรมหรือฟังก์ชั่น
- อินพุตอาจเป็นสตริงอาร์เรย์ส่งผ่านเป็นอาร์กิวเมนต์หรืออินพุตคีย์บอร์ด
- ผลลัพธ์อาจเป็นสตริงอาร์เรย์หรือพิมพ์ไปที่หน้าจอ
- ตัวเลขทั้งหมดในรายการเอาท์พุทจะแตกต่างกัน
สมมติฐาน
- รายการอินพุตนั้นสะอาด มันมีจำนวนเต็มบวกเท่านั้น
- จำนวนเต็มบวกมีช่วงตั้งแต่ 1 ถึง 2 31 -1
- หน่วยความจำน้อยกว่า 256 MB สำหรับตัวแปรของโปรแกรมของคุณ (โดยทั่วไปจะไม่อนุญาตให้ใช้อาร์เรย์ 2,147,483,648 องค์ประกอบ)
กรณีทดสอบ
Input: empty
Output: empty
Input: 5
Output: 5
Input: 1, 4, 2, 5, 3, 6
Output: 1, 4, 2, 5, 3, 6
Input: 3, 3, 3, 3, 3, 3
Output: 3, 1, 2, 4, 5, 6
Input: 6, 6, 4, 4, 2, 2
Output: 6, 1, 4, 3, 2, 5
Input: 2147483647, 2, 2147483647, 2
Output: 2147483647, 2, 1, 3
เกณฑ์การให้คะแนน
เพียงรหัสกอล์ฟที่เรียบง่าย จำนวนไบต์ต่ำสุดในสัปดาห์นี้จะเป็นผู้ชนะ
6, 6, ...
ให้6, 1, ...
?
6, 6, 4, 4, 2, 2
กรณีทดสอบยืนยันการตีความของอาดัม: การส่งออกที่คาดว่าจะเป็นและไม่6, 1, 4, 3, 2, 5
6, 1, 4, 2, 3, 5
6, 6, 1, 2, 3, 4, 5
→6, 7, 1, 2, 3, 4, 5