JavaRush /Blog Jawa /Random-JV /Ngopi #162. Implementasi tumpukan nggunakake antrian. Met...

Ngopi #162. Implementasi tumpukan nggunakake antrian. Metode kelas Matematika Jawa

Diterbitake ing grup

Ngleksanakake tumpukan nggunakake antrian

Sumber: Hackernoon Isi artikel iki dikhususake kanggo ngrampungake masalah ngleksanakake tumpukan mung nggunakake rong antrian. Ngopi #162.  Implementasi tumpukan nggunakake antrian.  Metode kelas Matematika Jawa - 1Kita duwe masalah karo Leetcode :

Ngleksanakake tumpukan last-in-first-out (LIFO) mung nggunakake rong antrian. Tumpukan sing dileksanakake kudu ndhukung kabeh fungsi tumpukan biasa ( push , top , pop , lan kosong ).

Ngleksanakake kelas MyStack:

  • void push (int x) Push unsur x menyang ndhuwur tumpukan.

  • int pop () Mbusak unsur ing ndhuwur tumpukan lan bali.

  • int ndhuwur () Ngasilake unsur ing ndhuwur tumpukan.

  • boolean kosong () Ngasilake bener yen tumpukan kosong, false digunakake .

Rincian tambahan:

  • Sampeyan mung kudu nggunakake operasi antrian standar, tegese mung push menyang mburi , Ndeleng / pop saka ngarep , ukuran , lan operasi kosong diijini .

  • Gumantung ing basa pamrograman sampeyan, antrian bisa uga ora didhukung asli. Nanging sampeyan bisa simulasi antrian nggunakake dhaftar utawa deque (pindho antrian) yen sampeyan mung nggunakake operasi antrian standar.

Tuladha 1:

Input

["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]

Output

[null, null, null, 2, 2, false]

Panjelasan

MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // возвращает 2
myStack.pop(); // возвращает 2
myStack.empty(); // возвращает False

Solusi saka masalah

Pilihan pisanan

Ing solusi pisanan kita bakal nggunakake memori tambahan:
static class MyStack {
  private Queue<Integer> current;
  private Queue<Integer> tmp;

  public MyStack() {
    current = new ArrayDeque<>();
    tmp = new ArrayDeque<>();
  }
We kudu antrian tambahan kanggo solusi iki. Ayo dadi miwiti karo push . Kanggo operasi push , kita mung nambah unsur anyar menyang antrian saiki.
public void push(int x) {
  current.add(x);
}
Trik utama ing kene yaiku metode pop . Ing kene kita sijine kabeh unsur kajaba sing pungkasan menyang antrian tmp . Lan saiki unsur pungkasan ing antrian dadi unsur pisanan dikirim.
public int pop() {
  if (current.isEmpty()){
    return -1;
  }
  int size = current.size();
  for (int i = 0; i < size - 1; i ++){
    tmp.add(current.poll());
  }
  int ret = current.poll();
  current = tmp;
  return ret;
}
Kepiye babagan metode ndhuwur ? Cara iki padha karo pop :
public int top() {
  if (current.isEmpty()){
    return -1;
  }
  int size = current.size();
  for (int i = 0; i < size - 1; i ++){
    tmp.add(current.poll());
  }
  int ret = current.peek();
  tmp.add(current.poll());
  current = tmp;
  return ret;
}
Lan kanggo metode kosong pungkasan , kita mung kudu mriksa antrian saiki:
public boolean empty() {
  return current.isEmpty();
}

Solusi kapindho

Ing pilihan iki, kita ora bakal nggunakake memori tambahan:
static class MyStack {

  private Queue<Integer> current;

  public MyStack2() {
    current = new ArrayDeque<>();
  }
}
Ide utama ing kene yaiku metode push . Kita nambah unsur saiki banjur mindhah unsur sadurunge sing saiki menyang mburi antrian. Contone, yen kita duwe antrian karo unsur [2,1], kita nggunakake push 3 - lan njaluk antrian [3,2,1], banjur [1,3,2], [2,1,3] lan. .. lan Kabeh.
public void push(int x) {
  current.add(x);
  int size = current.size();

  for (int i = 0; i < size-1; i ++){
    current.add(current.poll());
  }
}
Ing kene kita wis duwe unsur sing bener lan wiwitan antrian kanggo kabeh cara liyane.
public int pop() {
  return current.poll();
}

public int top() {
  return current.peek();
}

public boolean empty() {
  return current.isEmpty();
}

Metode kelas Matematika Jawa

Sumber: Sedheng Ing kirim iki, sampeyan bakal sinau babagan kemampuan lan ruang lingkup kelas Matematika Jawa. Ngopi #162.  Implementasi tumpukan nggunakake antrian.  Metode Kelas Matematika Jawa - 2Bagean paket Java.lang.Math ing basa Jawa yaiku kelas Matematika . Kelas iki nyedhiyakake sawetara cara sing wis ditemtokake kaya min , max , sqrt lan liya-liyane. Ing ngisor iki ana conto sawetara metode saka kelas Matematika sing bisa digunakake ing karya saben dina. 1. Metode max () ngasilake jumlah sing luwih gedhe liwat parameter:
System.out.println(Math.max(5,3));
OUTPUT: 5
2. Metode sqrt () bakal nuduhake akar kuadrat saka nomer sing diterusake minangka argumen:
System.out.println(Math.sqrt(4));
OUTPUT: 2.0
3. Cara acak () ngasilake nomer acak ing sawetara saka 0 kanggo 1.
System.out.println(Math.random());
OUTPUT: 0.8685304957692445
4. Cara abs () ngasilake nilai positif absolut saka sembarang nomer negatif. Contone, yen kita pass minangka 0, bakal bali 0 minangka asil.
System.out.println(Math.abs(-4));
OUTPUT: 4
System.out.println(Math.abs(4));
OUTPUT: 4
System.out.println(Math.abs(0));
OUTPUT: 0
5. Cara lantai () ngasilake nilai ganda sing kurang saka utawa padha karo argumen lan padha karo integer matematika sing paling cedhak.
System.out.println(Math.floor(-1.2));
OUTPUT: -2.0
System.out.println(Math.floor(1.2));
OUTPUT: 2.0
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION