Xóa phần tử thứ k của mảng a có n phần tử với Python

Để xóa phần tử thứ k của một mảng a có n phần tử, ta có thể thực hiện các bước sau:

  1. Kiểm tra xem giá trị của k có hợp lệ hay không. Trong trường hợp không hợp lệ (ví dụ: k <= 0 hoặc k > n), ta không thể xóa phần tử và mảng a không thay đổi.
  2. Nếu giá trị k hợp lệ, ta sẽ xóa phần tử thứ k bằng cách dịch chuyển tất cả các phần tử phía sau phần tử thứ k sang trái một vị trí.
  3. Giảm giá trị của n đi 1 đơn vị vì đã xóa đi một phần tử.

Dưới đây là một ví dụ code Python thực hiện các bước trên:

def xoa_phan_tu(mang, k):
    n = len(mang)
    
    if k <= 0 or k > n:
        return n, mang
    
    for i in range(k, n):
        mang[i-1] = mang[i]
    
    n -= 1
    mang = mang[:n]
    
    return n, mang

# Mảng ban đầu
a = [1, 2, 3, 4, 5]
k = 3

# Xóa phần tử thứ k
so_phan_tu_con_lai, mang_sau_khi_xoa = xoa_phan_tu(a, k)

# In kết quả
print("Số phần tử còn lại:", so_phan_tu_con_lai)
print("Mảng sau khi xóa:", mang_sau_khi_xoa)

Nếu bạn đang ôn tập để tham gia các kỳ thi học sinh giỏi. Tham khảo thêm cách đọc và ghi file cho bài toán trên. Code tham khảo:

def xoa_phan_tu(mang, k):
    if k <= 0 or k > len(mang):
        return mang
    
    mang.pop(k-1)
    return mang

# Đọc dữ liệu từ file "DELARR.INP"
with open("DELARR.INP", "r") as fi:
    x = fi.readline().strip()
    n, k = map(int, x.split())
    a = list(map(int, fi.readline().split()))

# Xóa phần tử thứ k của mảng a
a = xoa_phan_tu(a, k)

# Ghi kết quả vào file "DELLARR.OUT"
with open("DELLARR.OUT", "w") as fo:
    fo.write(str(len(a)) + "\n")
    fo.write(" ".join(map(str, a)))

Trong đó:

  • Sử dụng with open để đảm bảo việc mở và đóng file được thực hiện tự động và đúng cách.
  • Sử dụng strip() để loại bỏ khoảng trắng và ký tự xuống dòng thừa khi đọc dữ liệu từ file.
  • Sử dụng map() để ánh xạ các phần tử trong list sang kiểu dữ liệu mong muốn.
  • Sử dụng phương thức join() để kết hợp các phần tử trong list thành một chuỗi, cách nhau bởi dấu cách.

Mã trên sẽ đọc dữ liệu từ file “DELARR.INP”, xóa phần tử thứ k của mảng và ghi kết quả vào file “DELLARR.OUT”.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *