技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

leetCode

同じ文字でグルーピング

leetCode の以下の問題を解いた。 https://leetcode.com/problems/string-compression/文字列中の連続する同じ文字をグルーピングするという問題。 こういうのは、これまで、文字列を前から見て行って、同じ文字の連続が途切れたら、その1つ前までを1グル…

golang の map の使い方

golang で map を使って leetCode の典型的な問題を解いたので、今後の参考のために、書いたコードをここに残しておく。 重要そうなところは、ソース中のコメントに記載した。 type MagicDictionary struct { lengthToWords map[int][]string } func Constru…

Union-Find 木

leetCode の以下の問題を Union-Find 木を使って解いた。 https://leetcode.com/problems/smallest-string-with-swaps/今後の参考のために、自分の書いたコードを載せておく。 import java.util.*; public class SmallestString { public String smallestStr…

leetCode : interval 系の問題

leetCode の「452. Minimum Number of Arrows to Burst Balloons」を解いた。 https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/この問題は、苦手な interval 系なので、今後の参考のために、解答をここに残しておく。 public int…

Sliding Window

leetCode の「713. Subarray Product Less Than K」を Sliding Window アルゴリズムで解いたので、今後の参考のために、解説のコードをここに残しておく。 https://leetcode.com/problems/subarray-product-less-than-k/ public int numSubarrayProductLessT…

leetCode:216. Combination Sum III

leetCodeの「216. Combination Sum III」を解いた。(苦手な) dfs の良い練習になったので、今後の参考にため、書いたコードをここに残しておく。 https://leetcode.com/problems/combination-sum-iii/ class Solution { private int numCount; private int t…

leetCode:497. Random Point in Non-overlapping Rectangles

leetCodeの「497. Random Point in Non-overlapping Rectangles」を解いた。 https://leetcode.com/problems/random-point-in-non-overlapping-rectangles/初めて Map#ceilingKey() を使ったので、今後の参考のため、解答コードをここに残しておく。 import …

leetCode:824. Goat Latin

leetCode の「824. Goat Latin」を解いた。 https://leetcode.com/problems/goat-latin/leetCode の掲示板に、単語 (String) が文字 (char) を含んでいるのか、簡単に判定する方法があったので、今後の参考のため、その方法を使った実装例をここに残しておく…

leetCode:1032. Stream of Characters

leetCode の「1032. Stream of Characters」を解いた。 https://leetcode.com/problems/stream-of-characters/Trie木の実装の良い練習になったので、今後の参考のために自分の解答をここに残しておく。なお、通常の Trie 木と異なり、この問題では、単語を逆…

leetCode:1286. Iterator for Combination

leetCodeの「1286. Iterator for Combination」を解いた。 https://leetcode.com/problems/iterator-for-combination/Iteratorの作り方など、いろいろ参考になることが多い問題だったので、コメント付きの解答をここに残しておく。 import java.util.ArrayLi…

leetCode:435. Non-overlapping Intervals

leetCodeの「435. Non-overlapping Intervals」を解いた。 https://leetcode.com/problems/non-overlapping-intervals/解法を理解するのにちょっと時間がかかったので、ここにコメント付きの解答コードを残しておく。 public int eraseOverlapIntervals(int[…

leetCode:260. Single Number III

leetCodeの「260. Single Number III」を解いた。 https://leetcode.com/problems/single-number-iii/この問題に取り組んでいる中で、Javaのコレクションから配列に変換する簡単な方法を見つけたので、それも含めて解答をここに残しておく。 public int[] si…

Bucket Sort

leetCode の「347. Top K Frequent Elements」の Discuss を読んでいて、Bucket Sort というソート方法による解法が出てきたので、今後の参考のためここにメモしておく。 https://leetcode.com/problems/top-k-frequent-elements/ちなみに、Bucket Sort とい…

leetCode:67. Add Binary

leetCode の「67. Add Binary」を解いた。 https://leetcode.com/problems/add-binary/Java の char 型の引き算の結果の型など、気を付ける点があったので、ここに解答を残しておく。 public String addBinary(String a, String b) { StringBuilder sb = new…

leetCode:347. Top K Frequent Elements

leetCodeの「347. Top K Frequent Elements」を解いた。 https://leetcode.com/problems/top-k-frequent-elements/Map#getOrDefault() や PriorityQueue など、今後も使えそうなテクニックが幾つか出てくるので、参考のためここに解答を残しておく。 public …

leetCode:190. Reverse Bits

leetCodeの「190. Reverse Bits」を解いた。bit 演算の良い練習になったので、今後の参考のために、自分の解答をここに残しておく。 https://leetcode.com/problems/reverse-bits/ public int reverseBits(int n) { int ans = 0; int len = 32; for (int i =…

leetCode:15. 3Sum

leetCode の「15. 3Sum」を解いた。 https://leetcode.com/problems/3sum/細かいテクニックで、今後使えそうなものが幾つかあるので、ここに解答を残しておく。 import java.util.*; public class Solution { public List<List<Integer>> threeSum(int[] nums) { if (nums.</list<integer>…

leetCode:210. Course Schedule II

leetCode の「210. Course Schedule II」を解いた。 https://leetcode.com/problems/course-schedule-ii/トポロジカルソートの良い練習問題なので、今後の参考のため自分の解答をここに残しておく。 import java.util.ArrayDeque; import java.util.Queue; p…

leetCode:1079. Letter Tile Possibilities

leetCodeの「1079. Letter Tile Possibilities」を解いた。 https://leetcode.com/problems/letter-tile-possibilities/ 典型的なバックトラッキングの問題で、今後の参考になりそうなので、解法をここに残しておく。 import java.util.HashSet; import java…

leetCode:406. Queue Reconstruction by Height

leetCodeの「406. Queue Reconstruction by Height」を解いた。 https://leetcode.com/problems/queue-reconstruction-by-height/この問題では、二次元配列のソートや、List から int 配列への変換など、競技プログラミングに使えそうなテクニックが満載だっ…

Binary Tree を BFS で探索する時、階層ごとに処理する。

leetCode の「Populating Next Right Pointers in Each Node」を解いた。 https://leetcode.com/problems/populating-next-right-pointers-in-each-node/この問題を解く際、Binary Tree を BFS (幅優先探索) で探索しながら、階層ごとに処理するということを…

Java による Trie 木の実装

leetCode の「Implement Trie (Prefix Tree)」を解いた。 https://leetcode.com/problems/implement-trie-prefix-tree今後、Trie 木を実装する際のヒントにしたいので、作成したプログラムをここに残しておく。 import java.util.HashMap; import java.util.…

leetCode : Rotate Image

leetCode の Rotate Image を解いてみた。 https://leetcode.com/problems/rotate-image/この問題は、int型の2次元配列を右に回転させるというもの。例えば、以下のような感じ。 インプット [1,2,3] [4,5,6] [7,8,9] アウトプット [7,4,1] [8,5,2] [9,6,3]…

leetCode : Product of the Last K Numbers

leetCode の「Product of the Last K Numbers」を解いた。 https://leetcode.com/problems/product-of-the-last-k-numbers/提出したコードは以下。工夫した点は、一度計算した結果(積)をキャッシュ (productCache) に追加して、getProduct の際にキャッシュ…

leetCode : Generate Parentheses

leetCode の「Generate Parentheses」を解いてみた。 https://leetcode.com/problems/generate-parentheses/この問題は、与えられた数 n に対応する、"(" と ")" の妥当な組み合わせを全て作成するというもの。 例えば、n = 3 の時は以下になる。 [ "((()))"…

leetCode : Product of Array Except Self

leetCode の「Product of Array Except Self」を解いてみた。 https://leetcode.com/problems/product-of-array-except-self/この問題は、例えば以下のように、Inputの配列に対して、i 番目の数を除いたすべての積を Output の配列にする、というもの。 Inpu…

leetCode : Apply Discount Every n Orders

leetCode の「Apply Discount Every n Orders」を解いてみた。 https://leetcode.com/problems/apply-discount-every-n-orders/この問題は、商品の価格や割引の情報を受け取り、それに基づいて料金の計算をするというもの。なお、n 番目および n で割れる数…

leetCode : Kth Smallest Element in a BST

leetCode の「Kth Smallest Element in a BST」を解いた。 https://leetcode.com/problems/kth-smallest-element-in-a-bst/この問題は、引数で与えられたバイナリーツリーの中で k 番目に小さい数を戻り値として返すメソッドを作成するというもの。提出した…

leetCode:Subsets

leetCodeの「Subsets」を解いてみた。 https://leetcode.com/problems/subsets/この問題は、引数で与えられたintの配列について、全ての部分集合を返すというもの。 再帰を使って書くと簡単そうに思えたので、再帰を使って書いてみた。numsを前から辿りなが…

leetCode:「Add and Search Word - Data structure design」

leetCodeの「Add and Search Word - Data structure design」を解いてみた。 https://leetcode.com/problems/add-and-search-word-data-structure-design/この問題は、簡易版の辞書を作成するというもの。機能としては、単語の登録と検索がある。検索では「.…