shomanのブログ

ただの備忘録

Go

Goのcontainer/heapのソースコードを読んでいく

container/heapとは Goの標準ライブラリには、データ構造の一種であるヒープがcontainer/heapによって提供されています。 github.com heapはヒープソート(heap sort)や優先度付きキュー(priority queue)の実装に使われる重要なデータ構造のうちの一つです。 …

AtCoder ABC165 C - Many Requirements

以下の条件を満たす数列を全て生成します。 は、長さの正整数列である。 その後、それぞれに対し個ある制約を当てはめスコアを計算し、最大値を求めます。 atcoder.jp 上の条件を満たす数列の生成は深さ優先探索(DFS)でできます。 Goでの実装は以下です。 //…

Golangのjson.UnmarshalでJSONをデコードできない

Go

問題 以下のコードで、Person構造体のp.nameに"hoge"が入ることを期待してました。 package main import ( "encoding/json" "fmt" ) type Person struct { name string `json:"name"` } func main() { str := `{"name": "hoge"}` var p Person if err := jso…

AtCoder ABC157 D - Friend Suggestions BFSとUnionFind

問題概要 SNSに人の人がいます。 この人の間には、 組の「友達関係」と、 組の「ブロック関係」が存在します(いずれも双方向)。 各人において、友達の友達の…とたどって行き着く人のうち、直接の友達でもブロック関係にもない人(友達候補)の数を求めてくださ…

最小値をO(1)で返すスタックの実装

概要 前の記事でGoによるスタックの実装を紹介しました。 shoman.hatenablog.com そんな中でCracking the Coding Interviewの3.2の問題で以下のようなものがありました。 問題 pushとpopに加えて、最小の要素を返す関数minを持つスタックをどのようにデザイ…

Goでのスタックの実装

Go

概要 Goの標準パッケージにはスタックは含まれていない様です。 そこでスライスを使ってintを格納するスタックを実装してみました。 環境 golang v1.12.5 実装したメソッド Push: 値をトップに追加 Pop: 値をトップから削除して返す Peek: トップの値を返す …