最大最小の考え方

プログラミング
By: Jared Tarbell
この記事は約2分で読めます。

By: Jared Tarbell


SRM583 DIV2 250


ある数字の文字numが与えられた時,一度だけ一文字を交換できる.ただし,先頭に0は来ない.
この時,値が最小になるように文字を交換せよ.

 

<アルゴリズム>


最大最小を求めるとき,グリーディに値をすべて求められそうなら,求められる値をHashSetやTreeSetに入れるとコーディングしやすい.
また,値をすべて求めてSet系にaddするときは,値を求める段階で,新しいメモリ領域で値を保持する.
最後に,Collections.min(results)やCollections.max(results)で値を返す.

  • List系
    • ArrayList 配列を扱います。
    • LinkedList 配列を扱います。挿入・削除が高速です。
    • Vector 配列を扱います。パフォーマンスが悪いため現在ではあまり推奨されない古いクラスです。
  • Set系
    • HashSet 値の重複を許さない順不同の要素集合を扱います。
    • TreeSet 値の重複を許さないソートされたの要素集合を扱います。
  • Map系
    • HashMap キーと値の組からなる要素の集合を扱います。
    • TreeMap キーと値の組からなる要素の集合を扱います。キーでソートされています。

 

<varlal的理想解>

コメント

タイトルとURLをコピーしました