嘗試 Leetcode(二)

icecho發表於2019-04-26

Jewels and Stones

給定字串 J 代表石頭中寶石的型別,和字串 S 代表你擁有的石頭。 S 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。J 中的字母不重複,J 和 S 中的所有字元都是字母。字母區分大小寫,因此 a 和 A 是不同型別的石頭。

嘗試解法
class Solution
{
    /**
     * @param String $J
     * @param String $S
     * @return Integer
     */
    function numJewelsInStones($J, $S)
    {
        $count = 0;
        foreach (str_split($S) as $s) {
            foreach (str_split($J) as $j) {
                if ($s === $j) {
                    $count++;
                    break;
                }
            }
        }
        return $count;
    }
}

Min Stack

設計一個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。

  • push(x) -- 將元素 x 推入棧中。
  • pop() -- 刪除棧頂的元素。
  • top() -- 獲取棧頂元素。
  • getMin() -- 檢索棧中的最小元素。
嘗試解法
class MinStack
{

    protected $stack;

    /**
     * initialize your data structure here.
     */
    function __construct()
    {
        $this->stack = [];
    }

    /**
     * @param Integer $x
     * @return NULL
     */
    function push($x)
    {
        $this->stack[] = $x;
    }

    /**
     * @return NULL
     */
    function pop()
    {
        array_pop($this->stack);
    }

    /**
     * @return Integer
     */
    function top()
    {
        return end($this->stack);
    }

    /**
     * @return Integer
     */
    function getMin()
    {
        return min($this->stack);
    }
}

Hello。

相關文章