Menyisipkan dan menghapus elemen dalam matriks

Saya memiliki tugas di mana saya memiliki pertanyaan yang menanyakan implementasi berikut:

insertAtRanks(Integer x, Integer y, Object o): insert a new element to be stored at position (x,y) 

Dan

Object removeAtRanks(Integer x, Integer y): remove and return the element at position (x,y)

Itu sudah meminta implementasi replaceAtRanks di mana saya harus mengganti elemen di dalam posisi dengan parameter.

Jadi yang saya asumsikan ketika menyisipkan dan menghapus elemen, matriksnya akan bertambah dan berkurang ukurannya, tapi pertanyaan saya adalah bagaimana caranya?

Misalnya

| 3    6|
| 2    5|

Jika saya harus memasukkan nomor 8 pada posisi (1,1) apakah akan terjadi hal berikut?

| 3    6|
| 2    8|
| null 5|

Dan jika saya harus menghapus elemen di (1,1) setelahnya, apakah elemen tersebut akan kembali lagi?

| 3   6|
| 2   5|

Sunting:

Saya menggunakan Java untuk implementasinya, dan saya menggunakan array kelas 2 dimensi untuk mewakili matriks.


person Drahcir    schedule 01.03.2010    source sumber
comment
Memberi +1 karena dengan jujur ​​menyatakan bahwa ini adalah pertanyaan pekerjaan rumah, dan menunjukkan dengan tepat bagian tugas mana yang bermasalah   -  person Kena    schedule 01.03.2010
comment
Itu mungkin keputusan penerapan yang terserah Anda atau harus ditanyakan kepada instruktur. Jika mereka tidak menentukannya, mereka mungkin ingin Anda menerapkannya sesuai keinginan Anda. (Omong-omong, ide Anda saat ini kedengarannya bagus, selama penghapusan hanya menghapus jika ada nol pada baris/kolom terkait.)   -  person Michael Todd    schedule 01.03.2010


Jawaban (3)


|3    6|
|null 8|
|2    5|

or

|3    6|
|0    8|
|2    5|

or

|3    6|
|2    8|

atau banyak bentuk lain yang menyarankan dirinya sebagai alternatif. Saya pikir Anda harus memutuskan apa yang diminta untuk Anda terapkan, dan kemudian menerapkannya.

person High Performance Mark    schedule 01.03.2010

Saya tidak tahu bahasa apa yang Anda gunakan, tapi seharusnya seperti ini:

  • Sisipkan baris baru dengan nilai kosong
  • untuk i = newSizeOnX hingga i mencapai x (baris Anda), dengan i berkurang, salin baris tersebut (m[i+1]=[i])
  • lalu anda tinggal memasukkan objek pada posisi m[x][y] dan mengisi sisanya m[x][y'] (semua y' != y)
person fern17    schedule 01.03.2010

Sampai titik tertentu, ini adalah pertanyaan tentang spesifikasi.

Dalam sistem normal, Anda dapat:

  • putuskan untuk memperlakukan kasus tersebut sebagai pengecualian terlarang, dan mengembalikan kesalahan atau peringatan jika itu terjadi
  • tentukan perilaku spesifik yang telah ditentukan sebelumnya, yang konsisten untuk semua fungsi yang Anda terapkan, dan didokumentasikan dengan jelas

Misalnya, mengisi matriks dengan angka nol atau bukan angka adalah salah satu cara umum untuk menangani masalah pertama Anda. Bagaimana Matlab menangani ini secara default?

Itu juga tergantung pada aplikasinya. Misalnya, jika Anda bekerja dengan gambar, kemungkinan besar Anda tidak ingin melebihi ukuran gambar asli dalam banyak kasus. Jika Anda bekerja dengan suara, kasus defaultnya mungkin adalah memasukkan keheningan saat memperluas urutan data. Apa yang paling masuk akal untuk lamaran ANDA?

person Kena    schedule 01.03.2010