Skip to content

Commit 6d65212

Browse files
committed
feat: add solutions to lcof2 problem: No.068.Search Insert Position
1 parent b9c1b7b commit 6d65212

File tree

9 files changed

+164
-19
lines changed

9 files changed

+164
-19
lines changed

lcof2/剑指 Offer II 068. 查找插入位置/README.md

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,104 @@
6565

6666
<!-- 这里可写通用的实现逻辑 -->
6767

68+
二分查找。
69+
6870
<!-- tabs:start -->
6971

7072
### **Python3**
7173

7274
<!-- 这里可写当前语言的特殊实现逻辑 -->
7375

7476
```python
75-
77+
class Solution:
78+
def searchInsert(self, nums: List[int], target: int) -> int:
79+
left, right = 0, len(nums)
80+
while left < right:
81+
mid = (left + right) >> 1
82+
if nums[mid] >= target:
83+
right = mid
84+
else:
85+
left = mid + 1
86+
return left
7687
```
7788

7889
### **Java**
7990

8091
<!-- 这里可写当前语言的特殊实现逻辑 -->
8192

8293
```java
94+
class Solution {
95+
public int searchInsert(int[] nums, int target) {
96+
int left = 0, right = nums.length;
97+
while (left < right) {
98+
int mid = (left + right) >>> 1;
99+
if (nums[mid] >= target) {
100+
right = mid;
101+
} else {
102+
left = mid + 1;
103+
}
104+
}
105+
return left;
106+
}
107+
}
108+
```
109+
110+
### **C++**
111+
112+
```cpp
113+
class Solution {
114+
public:
115+
int searchInsert(vector<int>& nums, int target) {
116+
int left = 0, right = nums.size();
117+
while (left < right)
118+
{
119+
int mid = left + right >> 1;
120+
if (nums[mid] >= target) right = mid;
121+
else left = mid + 1;
122+
}
123+
return left;
124+
}
125+
};
126+
```
127+
128+
### **Go**
129+
130+
```go
131+
func searchInsert(nums []int, target int) int {
132+
left, right := 0, len(nums)
133+
for left < right {
134+
mid := (left + right) >> 1
135+
if nums[mid] >= target {
136+
right = mid
137+
} else {
138+
left = mid + 1
139+
}
140+
}
141+
return left
142+
}
143+
```
83144

145+
### **JavaScript**
146+
147+
```js
148+
/**
149+
* @param {number[]} nums
150+
* @param {number} target
151+
* @return {number}
152+
*/
153+
var searchInsert = function(nums, target) {
154+
let left = 0;
155+
let right = nums.length;
156+
while (left < right) {
157+
const mid = (left + right) >> 1;
158+
if (nums[mid] >= target) {
159+
right = mid;
160+
} else {
161+
left = mid + 1;
162+
}
163+
}
164+
return left;
165+
};
84166
```
85167

86168
### **...**
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
int searchInsert(vector<int>& nums, int target) {
4+
int left = 0, right = nums.size();
5+
while (left < right)
6+
{
7+
int mid = left + right >> 1;
8+
if (nums[mid] >= target) right = mid;
9+
else left = mid + 1;
10+
}
11+
return left;
12+
}
13+
};
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
func searchInsert(nums []int, target int) int {
2+
left, right := 0, len(nums)
3+
for left < right {
4+
mid := (left + right) >> 1
5+
if nums[mid] >= target {
6+
right = mid
7+
} else {
8+
left = mid + 1
9+
}
10+
}
11+
return left
12+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public int searchInsert(int[] nums, int target) {
3+
int left = 0, right = nums.length;
4+
while (left < right) {
5+
int mid = (left + right) >>> 1;
6+
if (nums[mid] >= target) {
7+
right = mid;
8+
} else {
9+
left = mid + 1;
10+
}
11+
}
12+
return left;
13+
}
14+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number}
5+
*/
6+
var searchInsert = function(nums, target) {
7+
let left = 0;
8+
let right = nums.length;
9+
while (left < right) {
10+
const mid = (left + right) >> 1;
11+
if (nums[mid] >= target) {
12+
right = mid;
13+
} else {
14+
left = mid + 1;
15+
}
16+
}
17+
return left;
18+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def searchInsert(self, nums: List[int], target: int) -> int:
3+
left, right = 0, len(nums)
4+
while left < right:
5+
mid = (left + right) >> 1
6+
if nums[mid] >= target:
7+
right = mid
8+
else:
9+
left = mid + 1
10+
return left

solution/0000-0099/0035.Search Insert Position/README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,11 @@ class Solution {
8888
public:
8989
int searchInsert(vector<int>& nums, int target) {
9090
int left = 0, right = nums.size();
91-
while (left < right) {
91+
while (left < right)
92+
{
9293
int mid = left + right >> 1;
93-
if (nums[mid] >= target) {
94-
right = mid;
95-
} else {
96-
left = mid + 1;
97-
}
94+
if (nums[mid] >= target) right = mid;
95+
else left = mid + 1;
9896
}
9997
return left;
10098
}

solution/0000-0099/0035.Search Insert Position/README_EN.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636

3737
## Solutions
3838

39+
Binary search.
40+
3941
<!-- tabs:start -->
4042

4143
### **Python3**
@@ -79,13 +81,11 @@ class Solution {
7981
public:
8082
int searchInsert(vector<int>& nums, int target) {
8183
int left = 0, right = nums.size();
82-
while (left < right) {
84+
while (left < right)
85+
{
8386
int mid = left + right >> 1;
84-
if (nums[mid] >= target) {
85-
right = mid;
86-
} else {
87-
left = mid + 1;
88-
}
87+
if (nums[mid] >= target) right = mid;
88+
else left = mid + 1;
8989
}
9090
return left;
9191
}

solution/0000-0099/0035.Search Insert Position/Solution.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ class Solution {
22
public:
33
int searchInsert(vector<int>& nums, int target) {
44
int left = 0, right = nums.size();
5-
while (left < right) {
5+
while (left < right)
6+
{
67
int mid = left + right >> 1;
7-
if (nums[mid] >= target) {
8-
right = mid;
9-
} else {
10-
left = mid + 1;
11-
}
8+
if (nums[mid] >= target) right = mid;
9+
else left = mid + 1;
1210
}
1311
return left;
1412
}

0 commit comments

Comments
 (0)