akcmthdkunのブログ

雑多なメモ

I AM周り

AWS

IAM policy アクターがリソースに対してアクションできるかの権限を表す。 IAMグループやIAMロールに対してポリシーをアタッチするのが普通。IAMユーザーに対しては直接アタッチせず、ロールやグループを割り当てる。 管理ポリシーとインラインポリシーがあ…

リリース戦略

あとで読む qiita.com

DynamoDB

トランザクション 注意点 考察 メリット デメリット トランザクション トランザクション書き込みをサポートしている。 docs.aws.amazon.com 複数テーブルを横断したトランザクション書き込みをサポートしているので、分散システムを構築してもトランザクショ…

関係データベース(RDS,RDBMS)

DB

基本的なことのメモ。 参考本 主キー テーブルと関数の関係 テーブルにおける関数従属 部分関数従属 例 推移関数従属 例 正規化 第一正規化 第二正規化 例 第三正規化 例 パフォーマンス N+1問題 対応 参考 セキュリティ SQLインジェクション 参考本 おうち…

goの学習

python,jsぐらいしか業務で触っていないのもありGo言語の勉強をちみちみ進めている。 今の所はleetcodeをgoで解きつつ、わからん操作を本,webで補完中。 読んでる本、ドキュメント go.dev 言わずと知れた公式ドキュメント。軽く流し読みしたぐらい。 playgro…

認証と認可 Keycloak入門 を読んでいる

改めて認証認可まわりを勉強 https://amzn.asia/d/7erUHxN keycloakは認証認可周りを上手いことやってくれるOSS keycloakを全面に押し出しているようなタイトルだが、認証認可の標準であるOAuthの説明も前半にちゃんと書いてある。 とりあえずOAuthの説明の…

レートリミットの設計

レートリミットとは 一定時間内のリクエスト数を制限する仕組み。 特定ユーザーからのリクエスト数制限などを行うことができる。 問題化 問題を以下のように設定する。 t: 時刻 r: リミットの計測範囲 n: r内におけるリクエスト数の最大値 この時、リクエス…

1679. Max Number of K-Sum Pairs

自力で解けた。O (n)のソリューション。 github.com

334. Increasing Triplet Subsequence

これは初見ではO(n3)の時間計算量の解しか出せなかった。 開放としては、 配列を走査して、今までにあった最小値(min)と最小以後に登場した次に最小の値(mid)を保持しつつ、midより大きな値が登場したら trueで返すというもの。 goの回答 github.com 迷いの…

739. Daily Temperatures

これが難しい。Monotonic Stack を利用した問題。 配列内のある温度に対して、それ以降でそれより高い初めて登場した温度のインデックスの差分を配列に入れて返す。 単純に、全探索すると、O(n^2)。 だが、Monotoinc Stackを使用するとO(n)で解ける。 Monoto…

35. Non-overlapping Intervals

python class Solution: def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int: intervals=sorted(intervals) res=0 bf=intervals[0] for cur in intervals[1:]: if cur[0] < bf[1]: bf[1]=min(cur[1],bf[1]) res+=1 else: bf[1]=cur[1] ret…

goのスライス

Go

goのスライスについて理解する。 スライスは可変長配列 int のように、T型(ただしTは何らかの型)となる。 なので、2次元配列の型は例えばintになる。(int型のスライス型のスライス) makeでスライス作るときは、 a:= make(int,n) b:=make(int,n) for i := r…

208. Implement Trie (Prefix Tree)

type Trie struct { m map[string]bool } func Constructor() Trie { t := Trie{} t.m = make(map[string]bool) return t } func (this *Trie) Insert(word string) { this.m[word] = true } func (this *Trie) Search(word string) bool { if this.m[word] …

プロセス スレッド

プロセス プログラムの実行単位。 プロセスにはメモリ空間、リソースが与えられる スレッド プロセスないの実行単位。 プロセス内に割り当てられたメモリ、リソースを共有する

gitコマンド

git blame ある行において誰が最新の編集を行なったかを確認する。

62. Unique Paths

func uniquePaths(m int, n int) int { arr := make([][]int, m) for i := 0; i < m; i++ { arr[i] = make([]int, n) } for i := 0; i < m; i++ { for j := 0; j < n; j++ { arr[i][j] = 1 } } //fmt.Println(arr) for i := 0; i < m; i++ { for j := 0; j <…

あとで読む

https://zenn.dev/hee/articles/ce9002ae525622

17. Letter Combinations of a Phone Number

class Solution: def letterCombinations(self, digits: str) -> List[str]: if len(digits)==0: return [] mapping={ "2":["a","b","c"], "3":["d","e","f"], "4":["g","h","i"], "5":["j","k","l"], "6":["m","n","o"], "7":["p","q","r","s"], "8":["t","…

ElasticSearch理解

用語 シャード インデックスのドキュメントを分割したもの。 プライマリシャードとレプリカシャードからなる。 負荷分散、ドキュメントの可用性向上のメリットがある。 プライマリシャード インデックスのドキュメントを分割したもの。 インデックスのドキュ…

restAPI

web

215. Kth Largest Element in an Array

class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: queue=deque(nums) stack=deque([-10001]) for _ in range(k): max_local=-10001 for i in range(len(queue)): num=queue.popleft() if num>max_local: queue.append(stack.pop(…

from collections import deque class Solution: def nearestExit(self, maze: List[List[str]], entrance: List[int]) -> int: ans=0 q=deque() q.append((entrance[0],entrance[1])) maxrow=len(maze) maxcolum=len(maze[0]) while q: ans+=1 for _ in ran…

アルゴリズム問題解く時のアルゴリズム選択

参考にしてみる algo.monster

841. Keys and Rooms

class Solution: def canVisitAllRooms(self, rooms: List[List[int]]) -> bool: visited=set() visited=self.dfs(rooms,0,visited) if len(visited)==len(rooms): return True else: return False def dfs(self,rooms,index,visited): visited.add(index) f…

450. Delete Node in a BST

初見で解ける気がしない、、、、 時間見つけてまた理解する

199. Binary Tree Right Side View

from collections import deque # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def rightSideView(self, root:…

1448. Count Good Nodes in Binary Tree

# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def goodNodes(self, root: TreeNode) -> int: max_of_path,goo…

2095. Delete the Middle Node of a Linked List

# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def deleteMiddle(self, head: Optional[ListNode]) -> Optional[ListNode]: head_copy=head curre…

649. Dota2 Senate

from collections import deque class Solution: def predictPartyVictory(self, senate: str) -> str: r,d,r_b,d_b=0,0,0,0 for i in senate: if i=="R": r+=1 else: d+=1 queue=deque(senate) while (r and d): if queue.popleft() == "R": if d_b == 0: r…

2390. Removing Stars From a String

from copy import deepcopy class Solution: def removeStars(self, s: str) -> str: i=0 while i<=len(s)-1: if s[i] == "*": s=s[:i-1]+s[i+1:] i-=1 else: i+=1 return s 愚直解の極み。 毎回sの長さを測りつつ、sの長さ更新を行っている。 解法2 from c…