Skip to content

Commit ae258b2

Browse files
author
“gitgou”
committed
nextGreaterElement
1 parent f968510 commit ae258b2

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

nextGreaterElement.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#include<iostream>
2+
#include<string>
3+
#include<algorithm>
4+
using namespace std;
5+
6+
int nextGreaterElement(int n) {
7+
string s = to_string(n);
8+
//char min = s.size() - 1;
9+
for(int i = s.size() - 1; i > 0; --i){
10+
if(s[i - 1] < s[i]){
11+
int iMin = i;
12+
while(iMin < s.size() && s[iMin] > s[i - 1]) ++iMin;
13+
swap(s[i - 1], s[iMin - 1]);
14+
//再往小的数值规划
15+
sort(s.begin() + i, s.end(), std::less());
16+
break;
17+
}
18+
}
19+
20+
int res = atoi(s.c_str());
21+
if(res <= n){
22+
return -1;
23+
}else{
24+
return res;
25+
}
26+
}

twoSum.cpp

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include<iostream>
2+
#include<vector>
3+
#include<algorithm>
4+
using namespace std;
5+
6+
int binarySearch(vector<int>& numbers, int target){
7+
int low = 0, high = numbers.size() - 1;
8+
while(low <= high){
9+
int mid = low + (high - low) / 2;
10+
if(numbers[mid] == target){
11+
return mid;
12+
}else if(numbers[mid] > target){
13+
high = mid - 1;
14+
}else if(numbers[mid] < target){
15+
low = mid + 1;
16+
}
17+
}
18+
19+
return -1;
20+
}
21+
22+
vector<int> twoSum(vector<int>& numbers, int target) {
23+
vector<int> res;
24+
for(int i = 0; i < numbers.size(); ++i){
25+
int iIndex = -1;
26+
if((iIndex = binarySearch(numbers, target - numbers[i])) != -1){
27+
if(iIndex == i && (iIndex < numbers.size() - 1) && numbers[iIndex + 1] == numbers[iIndex])
28+
{
29+
++iIndex;
30+
}
31+
if(iIndex == i && (iIndex > 1) && numbers[iIndex - 1] == numbers[iIndex]){
32+
--iIndex;
33+
}
34+
res.push_back(i + 1);
35+
res.push_back(iIndex + 1);
36+
return res;
37+
}
38+
}
39+
}
40+
41+
int main(){
42+
43+
return 0;
44+
}

0 commit comments

Comments
 (0)