Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลบองค์ประกอบของอาร์เรย์ในช่วงดัชนี [L – R] ด้วย C++

โจทย์: ลบองค์ประกอบของอาร์เรย์ในช่วงดัชนี L ถึง R (รวม L แต่ไม่รวม R หรือตามเงื่อนไขโค้ด)

แนวคิด: การเลื่อนองค์ประกอบ (Shift Elements)

ใช้ตัวแปร k เป็นดัชนีปลายทาง สำหรับแต่ละดัชนี i หากไม่อยู่ในช่วงที่จะลบ ให้คัดลอก arr[i] ไปที่ arr[k] และเพิ่ม k

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

int main() {
    int arr[] = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
    int L = 2, R = 6;
    int length = sizeof(arr) / sizeof(arr[0]);
    int k = 0;
    
    for (int i = 0; i < length; i++) {
        // เงื่อนไข: เก็บถ้า i <= L หรือ i >= R
        if (i <= L || i >= R) {
            arr[k] = arr[i];
            k++;
        }
    }
    
    length = k;  // ความยาวใหม่
    
    for (int i = 0; i < length; i++)
        cout << arr[i] << " ";
    return 0;
}

ผลลัพธ์

2 4 6 14 16 18 20

คำอธิบาย: ดัชนี 0,1,2 (ค่า 2,4,6) ถูกเก็บ ดัชนี 3,4,5 (ค่า 8,10,12) ถูกลบ ดัชนี 6,7,8,9 (ค่า 14,16,18,20) ถูกเก็บ หมายเหตุ: เงื่อนไข i <= L || i >= R หมายถึงลบดัชนี L+1 ถึง R-1 (ในที่นี้คือ 3,4,5)