Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions otherwise/binary_search/69.Sqrt/memo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
## 1st
- 問題
- 与えられた int の平方根を求める問題
- 制約
- 与えられる整数は int. 最大で 2^31 - 1
- 最大値の平方根が大体 46340 くらいなので、ブルートフォースでも 10^4 程度で回し切れるからセーフ
- BS で start, middle, end を使って O(log n) で解くほうが綺麗かな
- 方針
1. BS で start, middle, end を使う方針
- 実装
- 夜やったので30分程度
- 朝やろうね
```java
class Solution {
public int mySqrt(int x) {
// 線形走査かBSか
// 線形走査だと x の最大値で 10^4 くらいなのでまあ計算量はおっつく
// BS だと middle 判定でいけるんでまあ速い
// BS かな
if (x == 0 || x == 1) return x;
int start = 1;
int end = x;

int answer = 0;
while (start <= end) {
int middle = start + (end - start) / 2;
long squrd = (long) middle * middle;
// middle の二乗が x なら即座に return
if (squrd == x) return middle;
// middle の二乗が x を超えるなら、左を探索
else if (x < squrd) {
// end を middle - 1 にして探索
end = middle - 1;
}
// middle の二乗が x 未満なら、右探索
else if (squrd < x) {
// 今の middle が有力候補
answer = middle;
start = middle + 1;
}
}

return answer;
}
}
```

## 2nd

## 3rd

## 4th

## 5th
4 changes: 4 additions & 0 deletions otherwise/memo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Otherwise
- Arai60を解いてる途中、関連問題で出てきたやつをなんとなく解いてみたりした時の問題をまとめたディレクトリ
- 抜き打ちテストをする感じで遊びの要領でやる
- 解き終わったら、Topics ごとにまとめてストックしていく