Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình lấy các chỉ số của danh sách sau khi xóa các phần tử theo thứ tự tăng dần trong Python

Giả sử chúng ta có một danh sách các giá trị riêng biệt và chúng ta muốn xóa từng số theo thứ tự không giảm. Chúng tôi phải tìm chỉ số của các con số để xóa chúng.

Vì vậy, nếu đầu vào giống như nums =[4, 6, 2, 5, 3, 1], thì đầu ra sẽ là [5, 2, 3, 0, 1, 0] khi chúng ta xóa 1, vì vậy mảng là [ 4, 6, 2, 5, 3] thì bỏ 2, mảng là [4, 6, 5, 3], bỏ 3 ta được [4, 6, 5], bỏ 4 ta được [6, 5] , loại bỏ 5, [6] và cuối cùng là loại bỏ 6.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một hàm my_sort (). Điều này sẽ giúp tôi kết thúc
  • nếu kích thước của inds <=1, thì
    • trả lại inds
  • sorted_inds:=một danh sách mới
  • mid:=kích thước của inds / 2
  • left:=my_sort (inds [từ chỉ mục 0 đến giữa]), right:=my_sort (inds [từ chỉ mục giữa đến cuối])
  • i:=0, j:=0
  • while i
  • nếu nums [left [i]]
  • chèn trái [i] vào cuối sorted_inds
  • i:=i + 1
  • nếu không,
    • chèn ngay [j] vào cuối sorted_inds
    • lớn hơn [phải [j]]:=lớn hơn [phải [j]] + kích thước của trái - i
    • j:=j + 1
  • chèn bên trái [từ chỉ mục i đến cuối] vào sorted_inds
  • chèn bên phải [từ chỉ mục j đến cuối] vào sorted_inds
  • return sorted_inds
  • Từ phương thức chính, hãy làm như sau -
  • large:=một danh sách mới về số kích thước và điền bằng 0
  • my_sort (phạm vi 0 đến kích thước của nums)
  • num_larger_pairs:=tạo cặp cho mỗi (num, lớn hơn) và sắp xếp chúng
  • trả về danh sách có e [1] cho tất cả e trong num_larger_pairs
  • Ví dụ (Python)

    Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

     class Giải pháp:def giải (self, nums):trả về giải quyết (nums) def giải quyết (nums):def my_sort (inds):if len (inds) <=1:return inds sorted_inds =[] mid =len ( inds) // 2 left, right =my_sort (inds [:mid]), my_sort (inds [mid:]) i =j =0 while i  

    Đầu vào

     [4, 6, 2, 5, 3, 1] 

    Đầu ra

     [5, 2, 3, 0, 1, 0]