File tree Expand file tree Collapse file tree 5 files changed +132
-0
lines changed Expand file tree Collapse file tree 5 files changed +132
-0
lines changed Original file line number Diff line number Diff line change
1
+ string largestOddNumber (string num) {
2
+ int len = num.size ();
3
+ int index = -1 ;
4
+ bool flag = false ;
5
+ for (int i = len-1 ; i >= 0 ; --i)
6
+ {
7
+ int tmp = num[i]-' 0' ;
8
+ switch (tmp)
9
+ {
10
+ case 1 :
11
+ case 3 :
12
+ case 5 :
13
+ case 7 :
14
+ case 9 :
15
+ index = i;
16
+ flag = true ;
17
+ break ;
18
+ default :
19
+ break ;
20
+ }
21
+ if (flag)
22
+ break ;
23
+ }
24
+
25
+ if (index == -1 )
26
+ return " " ;
27
+ else
28
+ return num.substr (0 , index+1 );
29
+ }
Original file line number Diff line number Diff line change
1
+ bool canBeIncreasing (vector<int >& nums) {
2
+ int len = nums.size ();
3
+ if (len <= 2 )
4
+ return true ;
5
+
6
+ int i = 0 ;
7
+ for (; i < len-1 ; ++i)
8
+ {
9
+ if (nums[i+1 ] <= nums[i])
10
+ break ;
11
+ }
12
+ if (i >= len-2 )
13
+ return true ;
14
+ int j = i;
15
+ if (i == 0 || (i > 0 && nums[i+1 ] > nums[i-1 ]))
16
+ {
17
+ i += 1 ;
18
+ for (; i < len-1 ; ++i)
19
+ {
20
+ if (nums[i+1 ] <= nums[i])
21
+ break ;
22
+ }
23
+ if (i == len-1 )
24
+ return true ;
25
+ }
26
+
27
+ i = j;
28
+ if (i > 0 && nums[i] < nums[i+2 ])
29
+ {
30
+ i += 2 ;
31
+ for (; i < len-1 ; ++i)
32
+ {
33
+ if (nums[i+1 ] <= nums[i])
34
+ break ;
35
+ }
36
+ if (i == len-1 )
37
+ return true ;
38
+ }
39
+
40
+ return false ;
41
+ }
Original file line number Diff line number Diff line change
1
+ vector<int > buildArray (vector<int >& nums) {
2
+ int len = nums.size ();
3
+ vector<int > res (len, 0 );
4
+ for (int i = 0 ; i < len; ++i)
5
+ {
6
+ res[i] = nums[nums[i]];
7
+ }
8
+
9
+ return res;
10
+ }
Original file line number Diff line number Diff line change
1
+ Solution (vector<int >& nums) {
2
+ int len = nums.size ();
3
+ for (int i = 0 ; i < len; ++i)
4
+ {
5
+ elems[nums[i]].vals .push_back (i);
6
+ elems[nums[i]].len ++;
7
+ }
8
+ }
9
+
10
+ int pick (int target) {
11
+ int len = elems[target].len ;
12
+
13
+ return elems[target].vals [rand ()%len];
14
+ }
15
+
16
+ struct Elem
17
+ {
18
+ vector<int > vals;
19
+ int len;
20
+ Elem ():vals({}), len(0 ){}
21
+ };
22
+ map<int , Elem> elems;
Original file line number Diff line number Diff line change
1
+ int minAddToMakeValid (string s) {
2
+ int len = s.size ();
3
+ if (len <= 1 )
4
+ return len;
5
+ int i = 0 ;
6
+ int left = 0 , ct = 0 ;
7
+ while (i < len)
8
+ {
9
+ if (s[i] == ' (' )
10
+ {
11
+ ++left;
12
+ ++ct;
13
+ }
14
+ else
15
+ {
16
+ if (left > 0 )
17
+ {
18
+ --left;
19
+ --ct;
20
+ }
21
+ else
22
+ {
23
+ ++ct;
24
+ }
25
+ }
26
+ ++i;
27
+ }
28
+
29
+ return ct;
30
+ }
You can’t perform that action at this time.
0 commit comments