Skip to content

Commit 27aba50

Browse files
committed
Create 0034-find-first-and-last-position-of-element-in-sorted-array.kt
1 parent 215b016 commit 27aba50

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
//same solution but with function
2+
class Solution {
3+
fun searchRange(nums: IntArray, target: Int): IntArray {
4+
val res = intArrayOf(-1,-1)
5+
6+
fun binarySearch(getLeft: Boolean): Int{
7+
var left = 0
8+
var right = nums.size-1
9+
var pos = -1
10+
while(left <= right){
11+
val mid = (left + right) / 2
12+
if(target > nums[mid]){
13+
left = mid + 1
14+
}else if(target < nums[mid]){
15+
right = mid - 1
16+
}else{
17+
pos = mid
18+
if(getLeft)
19+
right = mid -1
20+
else
21+
left = mid + 1
22+
}
23+
}
24+
return pos
25+
}
26+
27+
res[0] = binarySearch(true)
28+
res[1] = binarySearch(false)
29+
30+
return res
31+
}
32+
}
33+
34+
class Solution {
35+
fun searchRange(nums: IntArray, target: Int): IntArray {
36+
val res = intArrayOf(-1,-1)
37+
var left = 0
38+
var right = nums.size-1
39+
var pos = -1
40+
var mid = -1
41+
while(left <= right){
42+
mid = (left + right) / 2
43+
if(target > nums[mid]){
44+
left = mid + 1
45+
}else if(target < nums[mid]){
46+
right = mid - 1
47+
}else{
48+
pos = mid
49+
right = mid -1
50+
}
51+
res[0] = pos
52+
}
53+
left = 0
54+
right = nums.size-1
55+
while(left <= right){
56+
mid = (left + right) / 2
57+
if(target > nums[mid]){
58+
left = mid + 1
59+
}else if(target < nums[mid]){
60+
right = mid - 1
61+
}else{
62+
pos = mid
63+
left = mid + 1
64+
}
65+
res[1] = pos
66+
}
67+
return res
68+
}
69+
}

0 commit comments

Comments
 (0)