คำอธิบายคำถาม
ให้อาร์เรย์เรียงลำดับแล้วลบองค์ประกอบที่ซ้ำกันออกจากอาร์เรย์เก็บองค์ประกอบที่ซ้ำกันเพียงหนึ่งองค์ประกอบและส่งคืนความยาวอาร์เรย์ใหม่
จำเป็นต้อง:
อย่าจัดสรรพื้นที่เพิ่มเติมให้กับอาร์เรย์คุณต้องใช้ขนาดหน่วยความจำของค่าคงที่ในการทำงาน
ตัวอย่างเช่น:
เมื่อได้รับอาร์เรย์ A = [1,1,2] การโทรฟังก์ชั่นของคุณจะต้องส่งคืนความยาว = 2 และตอนนี้จะกลายเป็น [1,2]
เข้า
อาร์เรย์เรียงลำดับเช่น [1,1,2]
เอาท์พุท
ส่งคืนความยาวใหม่ของอาร์เรย์เช่นความยาว = 2
วิธีตัวชี้ที่รวดเร็วและช้า
ตั้งค่าตัวชี้ที่รวดเร็วเพื่อสำรวจอาร์เรย์และตัวชี้ช้าไปยังบิตถัดไปขององค์ประกอบที่ไม่ซ้ำ
public static int removeduplicates (int [] nums) {ถ้า (nums.length <1) ส่งคืน nums.length; int ช้า = 1; สำหรับ (int fast = 1; fast <nums.length; fast ++) {ถ้า (nums [fast]! = nums [slow - 1]) {nums [slow ++] = nums [เร็ว]; }} return slow;}การสาธิตแอนิเมชั่น:
ซึ่งขยายออกไป
ลบองค์ประกอบที่ซ้ำกันออกจากอาร์เรย์ที่จัดเรียงออกจากจำนวนตัวเลขที่ระบุ
public Static int removedUplicatesn (int [] nums, int repeetn) {ถ้า (nums.length <= repeatn) ส่งคืน nums.length; ดัชนี int = ซ้ำ; สำหรับ (int i = ซ้ำ; i <nums.length; i ++) {ถ้า (nums [i]! = nums [index - repeetn]) {nums [index ++] = nums [i]; }} return index;}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น