何かやってみるブログ

興味をもったこと、趣味のこと、技術について色々書きます。

LeetCode Fix Names in a Tableを解いてみた

問題 leetcode.com 解いた CONCAT関数やSUBSTRING関数といった文字列関数を使うと解ける dev.mysql.com SELECT user_id, CONCAT(UPPER(SUBSTRING(name, 1, 1)), LOWER(SUBSTRING(name, 2))) AS name FROM Users ORDER BY user_id; 結果

LeetCode Actors and Directors Who Cooperated At Least Three Timesを解いてみた

問題 leetcode.com 解いた SELECT A.actor_id, A.director_id FROM ( SELECT actor_id, director_id, COUNT(timestamp) AS count FROM ActorDirector GROUP BY actor_id, director_id) A WHERE A.count >= 3; 結果

LeetCode Sales Personを解いてみた

問題 leetcode.com 解いた サブクエリで該当のsales_idを引っ張ってくるだけ。 SELECT name FROM SalesPerson WHERE sales_id NOT IN( SELECT sales_id AS id FROM Orders LEFT OUTER JOIN Company ON Orders.com_id = Company.com_id WHERE Company.name = …

LeetCode Climbing Stairsを解いてみた。

問題 leetcode.com 解いた 手元の紙で実験してみたら フィボナッチ数列 になっていることに気づいた。 # @param {Integer} n # @return {Integer} def climb_stairs(n) result = 0 i, j = 1, 2 return 1 if n == 1 return 2 if n == 2 (n - 2).times do |t| …

[メモ] Goで作成したアプリをGitHub Actionsを使ってHerokuへデプロイする。

最近、個人で作成したアプリをHerokuへデプロイした時のメモです。 github.com 温かみのある手動デプロイ GitHub Actionsを使ってHerokuへデプロイ とりあえず手動デプロイの手順もメモする。 温かみのある手動デプロイ 基本的には以下の手順に書かれた通り…

[作業ログ] PlanetSclaeを雑に試してみた

最近よく目にするので PlanetScale というデータベースのサービスを試してみた。 planetscale.com qiita.com DBを構築する GoからDBに接続する。 DBを構築する 最近作った簡単なアプリの db/migrationsと golang-migrateを使用してテーブルを作成、レコード…

LeetCode Group Sold Products By The Dateを解いてみた

問題 https://leetcode.com/problems/group-sold-products-by-the-date/ 解いた GROUP_CONCAT関数を初めて知った。 SELECT sell_date, COUNT(DISTINCT product) AS num_sold, GROUP_CONCAT(DISTINCT product) AS products FROM Activities GROUP BY sell_dat…

[Goメモ] golang-migrateを使用してmigrateしたDBを使ったテストをGitHub Actionsで回す。

すっかり忘れてしまったHKT48のメンバーを思い出すために個人開発で簡単なクイズアプリを作成したとき golang-migate と GitHub Actionsを使うことがあったのでメモに残す。 以下が対象のリポジトリ github.com golang-migrateについて とりあえずローカルで…

leetcode Sqrt(x)を解いてみた

問題 leetcode.com 解いた # @param {Integer} x # @return {Integer} def my_sqrt(x) Math.sqrt(x).to_i end docs.ruby-lang.org 結果

LeetCode Multiply Strings を解いてみた

問題 https://leetcode.com/problems/multiply-strings/ 解いた # @param {String} num1 # @param {String} num2 # @return {String} def multiply(num1, num2) (num1.to_i * num2.to_i).to_s end 結果

雰囲気でLeetCodeのGraphQLのAPIを叩いてみた。

今まで仕事でも使わないし身近でGraphQLを使う機会がなくGraphQL? 何それ美味しいの?って感じであったが、LeetCodeのAPIを叩くときGraphQLに出会ったのでメモに残す。 対象のAPIは今まで解いた問題の数や解いた問題の難易度別の内訳みたいなものを返してく…

LeetCode Game Play Analysis Iを解いてみた

問題 https://leetcode.com/problems/game-play-analysis-i/ 解いた SELECT player_id, MIN(event_date) AS first_login FROM Activity GROUP BY player_id 最初はORDER BYと GROUP BYを同時に使って解こうとして上手くいかず以下の記事を読んでそうかMIN関…

2022年3月観たアニメ、読んだマンガ、やってみたことなど

映像コンテンツ コタローは1人暮らし からかい上手の高木さん3 マンガ 松井さんはスーパールーキー 1~3巻 ハレ婚。全巻 彼女、お借りします 1 〜25巻 ショーハショーテン! 1 ドラフトキング 1〜2巻 寄生獣 1〜4巻 やってみたこと LeetCodeをでアルゴリズムの…

[Rails メモ] Deviseでログイン回数とかトラッキング情報を意図的にUpdateしたい場合

レビューしている時に touchメソッド使って current_sign_in_atとかを力技で更新をしているのをみてもっと良い方法がないかと調べて見つけたのでメモに残す。 結論としては Devise::Models::Trackableモジュールの #update_track_fields!を使えば良い。 リポ…

LeetCode Nth Highest Salary を解いてみた

問題 https://leetcode.com/problems/nth-highest-salary/ 解いた CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN RETURN ( # Write your MySQL query statement below. SELECT DISTINCT Salary FROM (SELECT DENSE_RANK() OVER(ORDER BY Sa…

LeetCode Implement strStr()を解いてみた

問題 https://leetcode.com/problems/implement-strstr/ 解いた # @param {String} haystack # @param {String} needle # @return {Integer} def str_str(haystack, needle) return -1 unless haystack.include? needle haystack.index(needle) end 結果

LeetCode department-top-three-salariesを解いてみた

問題 leetcode.com 解いた SELECT Department, Employee, Salary FROM ( SELECT ( SELECT DISTINCT Salary FROM ( SELECT DENSE_RANK() OVER (ORDER BY Salary DESC) AS 'rank', Salary FROM Employee WHERE Employee.departmentId = DD.id) E WHERE E.rank …

LeetCode Department Highest Salaryを解いてみた

問題 https://leetcode.com/problems/department-highest-salary/ 解いた SELECT EED.name AS 'Department', Employee.name AS 'Employee', Employee.salary AS 'Salary' FROM ( SELECT EE.Max, Department.name FROM ( SELECT MAX(salary) AS Max, departme…

LeetCode Merge Two Sorted Listsを解いてみた。

問題 https://leetcode.com/problems/merge-two-sorted-lists/ 解いてみた # Definition for singly-linked list. # class ListNode # attr_accessor :val, :next # def initialize(val = 0, _next = nil) # @val = val # @next = _next # end # end # @para…

LeetCode Consecutive Numbers を解いてみた

問題 https://leetcode.com/problems/consecutive-numbers/ 解いた SELECT L.num AS 'ConsecutiveNums' FROM Logs L, Logs LL, Logs LLL WHERE L.id = LL.id - 1 AND LL.id = LLL.id - 1 AND L.num = LL.num && LL.num = LLL.num GROUP BY L.num; 結果

LeetCode Delete Duplicate Emailsを解いてみた

問題 https://leetcode.com/problems/delete-duplicate-emails/ 解いた DELETE P FROM Person AS P, Person AS PP WHERE P.email = PP.email AND P.ID > PP.id; 結果

LeetCode Rank Scoresを解いてみた

問題 https://leetcode.com/problems/rank-scores/ 解いた SELECT score, DENSE_RANK() OVER (ORDER BY score DESC) 'rank' FROM Scores ORDER BY score DESC; 結果

LeetCode Rising Temperatureを解いてみた

問題 https://leetcode.com/problems/rising-temperature/ 解いた SELECT WWW.id FROM ( SELECT WW.id, W.temperature AS 'pre_temp', WW.temperature AS 'today_temp' FROM Weather AS W, Weather AS WW WHERE DATEDIFF(WW.recordDate, W.recordDate) = 1 O…

LeetCode Median of Two Sorted Arraysを解いてみた

問題 https://leetcode.com/problems/median-of-two-sorted-arrays/ 解いた # @param {Integer[]} nums1 # @param {Integer[]} nums2 # @return {Float} def find_median_sorted_arrays(nums1, nums2) nums = (nums1 + nums2).sort result = 0 if nums.lengt…

LeetCode Customers Who Never Orderを解いてみた

問題 https://leetcode.com/problems/customers-who-never-order/ 解いた SELECT name AS 'Customers' FROM Customers LEFT JOIN Orders ON Customers.id = Orders.customerId WHERE customerId IS NULL; 結果

LeetCode Duplicate Emailsを解いた

問題 https://leetcode.com/problems/duplicate-emails/ 解いた SELECT email FROM Person GROUP BY email HAVING COUNT(email) > 1; 結果

LeetCode Employees Earning More Than Their Managers解いてみた

問題 https://leetcode.com/problems/employees-earning-more-than-their-managers/submissions/ 解いた サブクエリを使えば良い。 SELECT name AS Employee FROM Employee AS E WHERE salary > ( SELECT salary FROM Employee where id = E.managerId ) ; …

LeetCode Valid Parenthesesを解いてみた

問題 https://leetcode.com/problems/valid-parentheses/ 解いた # @param {String} s # @return {Boolean} def valid_operators ["()", "{}", "[]"] end def is_valid?(char) valid_operators.include? char end def close_operators [")", "}", "]"] end d…

LeetCode Longest Common Prefixを解いてみた

問題 https://leetcode.com/problems/longest-common-prefix/ 解いた # @param {String[]} strs # @return {String} def longest_common_prefix(strs) data = strs[0] result = "" data.chars.each_with_index do |char, index| if strs.all? { |str| str[in…

LeetCode Combine Two Tablesを解いた

問題 https://leetcode.com/problems/combine-two-tables/ 解いた SELECT Person.firstName, Person.lastName, Address.city, Address.state FROM Person LEFT OUTER JOIN Address ON Person.personId = Address.personId 結果 LEFT OUTER JOIN すれば良いで…