マツシタのお勉強

2017-05-09から1日間の記事一覧

問題 2つの文字列が与えれる。2つの文字列がアナグラムとなるように文字を消す数を返す問題。 www.hackerrank.com 解法 ハッシュを用いて、それぞれの文字の出現回数を記録する。文字列はローワーケースのみだけなので、HashMapを使わずに配列を使うことで…

Arrays: Left Rotation in Hacker Rank

問題 www.hackerrank.com 解法 剰余を使ってインデックスを上手く操作してあげる。

DP: Coin Change in Hack Rank

問題 N枚の異なるコインと支払いたい金額moneyが与えれる。与えられたコインはそれぞれ無限に使える時、与えられたコインを使って合計金額がmoneyとなるような支払い方法の通り数を求める問題。 www.hackerrank.com 解法 動的計画法と用いることで計算量O(N*…

空間計算量O(1)で配列内のユニークな数字を見つけるBit Manipulation: Lonely Integer

問題 n個の要素(整数)の配列が与えらる。配列内の要素はただ1つを除いて、全て2回ずつ現れる。1回のみ出現するユニークな数字を求める問題。 www.hackerrank.com 解法 この問題は、XORを用いることで空間計算量O(1)で解くことができる。 上記のように配列…

動的計画法を用いて階段の登り方の通り数求める Davis' Staircase in Hacker Rank

問題 始め階段の0段目にいて、N段目までの登り方の方法の数を求める問題。 階段は1段、2段又は3段を一気に登る事ができる。 www.hackerrank.com 解法 全列挙するためには、今いる段から1段登るか2段登るか3段登るかの3通りを毎回行うので、3N通り行…

O(√N)で素数判定をする Time Complexity: Primality in Hacker Rank

問題 整数がNが与えられて、Nが素数か否かを判定するメソッドを実装する問題。 www.hackerrank.com 解法 素数とは、1と自身の数のみが約数となる1より大きい数の事。なので、2 ≦ i < Nのiでループを回し、Nがiで割り切れるかどうかを判定することで素数判…

Shortest Reach in a Graph in Hacker Rank

問題 n個のノードとm個のエッジによって構成されるグラフが与えられ、スタートノードからその他の全てノードまでの最短距離を求める問題。 www.hackerrank.com 解法 優先度付きキューを用いたダイクストラ法を使って解く 計算量 優先度付きキューに値を追加…