技術メモ

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

Java

JavaのOptional

これまでどういう時に使うのか、いまいち分からなかったのだが、以下のサイト様の記事を読んで理解が深まった気がする。 【Optional入門】Javaでnullを扱うベストプラクティスのご紹介 Optional は null かもしれないオブジェクトを扱うためのもので、メソッ…

Java の enum

これまで、Java の enum の実体というかメモリ上でどうなっているかの理解が曖昧だったのだが、以下の記事を参考にさせて頂き、分かった気がする。 Javaの定数はEnumで! Enumの使い方から考え方までお伝えします enum の各項目 (フィールド) に対応するオブ…

Java で REST API (Post) 実行

ネットの記事をいろいろ参考にしながら、Java 1.8 の標準 API だけで作ってみた。 import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; public class MainPost { public static void mai…

JFSのFaceletsページとバッキングBeanとの同期のタイミング

JFS の Facelets ページの UI コンポと、その入力値を格納するバッキング Bean があった時、UI コンポへの入力値がいつバッキング Bean に反映されるのか分からなかったので、ちょっと調べてみた。 当初は、Facelets ページでのポストバック (メソッド呼び出…

ダイクストラ法

ダイクストラ法で leetCode の問題を解いたので、参考のためにコードをここに残しておく。 Path with Maximum Probability - LeetCodeポイントは、コード中のコメントに記した。 PriorityQueue(heap) を使っているのは、キューの中で最大確率の (確定できる)…

Javaの2次元配列のソート

簡単なやり方がすぐに見つからなかったので、ここにメモしておく。 以下のようにすると、1つ目の要素でソートできる。 int[][] matrix = new int[][]{{10,5},{3,4},{9,2}}; Arrays.sort(matrix, (a, b) -> a[0] - b[0]); 結果は、[3, 4] -> [9, 2] -> [10, …

Union-Find 木

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

Javaのkeystoreタイプ

Java の keystore のタイプとして以下をよく見かける。これらの違いがよく分かっていなかったので、ここに簡単に纏める。 なお、keystore は、公開鍵証明書とそれに対する秘密鍵を格納する場所のこと。Java アプリが SSL/TLS 通信を行う時などに使用される。…

golang と Java のソート例

leetCode の https://leetcode.com/problems/two-city-schedulingを、golang と Java で解いたのだが、2次元配列(スライス)の sort の処理を書いたので、今後の参考のため、ここに残しておく。 package main import "sort" func twoCitySchedCost(costs [][…

xmlファイルから特定のタグの値を抽出する。

Java で xml ファイルから特定のタグの値を抽出するプログラムを作成した。 使い方は以下の通り。 java XmlTagValueReader "xmlファイルのパス" "対象のタグ名" 例えば、以下の xml ファイルと、「name」を引数として与えると、 apple, lemon が抽出される。 …

最短経路問題

これまであまり解いてこなかった最短経路問題を解いたので、今後の参考のため、ここに実装したコードを残しておく。問題は以下。 https://leetcode.com/problems/shortest-path-in-binary-matrix/解答コードは以下。競技プロ界ではお馴染みの BFS を使用して…

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…

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 =…

bitmask を使って部分集合を列挙する問題を解く

leetCode の「78. Subsets」の「Solution」に、面白い&今後も使えそうな解法があったので、それを元に実装したコードをブログに書いておく。 https://leetcode.com/problems/subsets/この解法は、与えられた集合体の部分集合を列挙する問題を解く問題などに…

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.…