Skip to content

Commit ef12666

Browse files
committed
Add Solution 035[CPP]
1 parent 4ae88e3 commit ef12666

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

solution/035.Search Insert Position/README.md

+71
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,74 @@ class Solution {
9090
}
9191
}
9292
```
93+
94+
#### CPP
95+
96+
```CPP
97+
class Solution {
98+
public:
99+
int searchInsert(vector<int>& nums, int target) {
100+
int len = nums.size();
101+
if(len == 0){
102+
nums.push_back(target);
103+
return 0;
104+
}
105+
106+
auto iter = find(nums.begin(),nums.end(),target);
107+
108+
if(iter != nums.end()){
109+
return binarySearch(nums,0,len - 1,target);
110+
}
111+
else{
112+
int slow = 0;
113+
int fast = 1;
114+
115+
if(nums[0] >= target)return 0;
116+
if(nums[len-1] <= target)return len;
117+
118+
while(fast < len){
119+
if(nums[slow] <= target && nums[fast] > target){
120+
nums.insert(nums.begin() + fast,target);
121+
return fast;
122+
}
123+
else{
124+
slow++;
125+
fast++;
126+
}
127+
}
128+
return fast;
129+
}
130+
}
131+
132+
133+
int binarySearch(vector<int> &nums,int left,int right,int target){
134+
if(nums[left] == target)return left;
135+
if(nums[right] == target)return right;
136+
137+
int mid = (left + right) / 2;
138+
139+
if(nums[mid] > target)return binarySearch(nums,left+1,mid,target);
140+
else if(nums[mid] < target)return binarySearch(nums,mid,right-1,target);
141+
else return mid;
142+
}
143+
144+
};
145+
146+
-------------------------
147+
class Solution {
148+
public:
149+
int searchInsert(vector<int>& nums, int target) {
150+
if (nums.size() == 0) {
151+
nums.push_back(target);
152+
return 0;
153+
}
154+
unsigned int i = 0;
155+
156+
while(i<nums.size()&&nums[i]<target)i++;
157+
158+
nums.insert(nums.begin() + i, target);
159+
return i;
160+
}
161+
};
162+
163+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
class Solution {
2+
public:
3+
int searchInsert(vector<int>& nums, int target) {
4+
int len = nums.size();
5+
if(len == 0){
6+
nums.push_back(target);
7+
return 0;
8+
}
9+
10+
auto iter = find(nums.begin(),nums.end(),target);
11+
12+
if(iter != nums.end()){
13+
return binarySearch(nums,0,len - 1,target);
14+
}
15+
else{
16+
int slow = 0;
17+
int fast = 1;
18+
19+
if(nums[0] >= target)return 0;
20+
if(nums[len-1] <= target)return len;
21+
22+
while(fast < len){
23+
if(nums[slow] <= target && nums[fast] > target){
24+
nums.insert(nums.begin() + fast,target);
25+
return fast;
26+
}
27+
else{
28+
slow++;
29+
fast++;
30+
}
31+
}
32+
return fast;
33+
}
34+
}
35+
36+
37+
int binarySearch(vector<int> &nums,int left,int right,int target){
38+
if(nums[left] == target)return left;
39+
if(nums[right] == target)return right;
40+
41+
int mid = (left + right) / 2;
42+
43+
if(nums[mid] > target)return binarySearch(nums,left+1,mid,target);
44+
else if(nums[mid] < target)return binarySearch(nums,mid,right-1,target);
45+
else return mid;
46+
}
47+
48+
};
49+
50+
-------------------------
51+
class Solution {
52+
public:
53+
int searchInsert(vector<int>& nums, int target) {
54+
if (nums.size() == 0) {
55+
nums.push_back(target);
56+
return 0;
57+
}
58+
unsigned int i = 0;
59+
60+
while(i<nums.size()&&nums[i]<target)i++;
61+
62+
nums.insert(nums.begin() + i, target);
63+
return i;
64+
}
65+
};

0 commit comments

Comments
 (0)