File tree 2 files changed +70
-0
lines changed
2 files changed +70
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments