8000 Merge pull request #5 from MagicienDeCode/xl-kotlin-278-first-bad-ver… · invince/Leetcode@429bd8d · GitHub
[go: up one dir, main page]

Skip to content

Commit 429bd8d

Browse files
authored
Merge pull request AlgoStudyGroup#5 from MagicienDeCode/xl-kotlin-278-first-bad-version
kotlin for leetcode 278 first bad version
2 parents ba42e19 + 28fe577 commit 429bd8d

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class FirstBadVersionKotlin278 {
2+
fun firstBadVersion(n: Int): Int {
3+
var left = 0
4+
var right = n
5+
// never dead loop
6+
while (left + 1 < right) {
7+
val mid = left + (right - left) / 2
8+
when {
9+
// find first bad version, so move right to mid
10+
isBadVersion(mid) -> right = mid
11+
else -> left = mid
12+
}
13+
}
14+
return when {
15+
isBadVersion(left) -> left
16+
else -> right
17+
}
18+
}
19+
20+
private fun isBadVersion(version: Int) = version > 3
21+
}

0 commit comments

Comments
 (0)
0