File tree Expand file tree Collapse file tree 7 files changed +166
-0
lines changed Expand file tree Collapse file tree 7 files changed +166
-0
lines changed Original file line number Diff line number Diff line change
1
+ bool kLengthApart (vector<int >& nums, int k) {
2
+ int len = nums.size ();
3
+ int i = 0 ;
4
+ while (i < len && nums[i] == 0 )
5
+ ++i;
6
+ if (i == len)
7
+ return true ;
8
+
9
+ int j = i+1 ;
10
+ int n = 0 ;
11
+ while (j < len)
12
+ {
13
+ if (nums[j] == 0 )
14
+ ++n;
15
+ else
16
+ {
17
+ if (n < k)
18
+ return false ;
19
+ else
20
+ {
21
+ n = 0 ;
22
+ i = j;
23
+ }
24
+ }
25
+ ++j;
26
+ }
27
+
28
+ return true ;
29
+ }
Original file line number Diff line number Diff line change
1
+ string modifyString (string s) {
2
+ int len = s.size ();
3
+ int i = 0 ;
4
+ if (s[i] == ' ?' )
5
+ {
6
+ if (i+1 < len && s[i+1 ] != ' ?' )
7
+ s[i] = s[i+1 ] < ' z' ? s[i+1 ]+1 : ' a' ;
8
+ else
9
+ s[i] = ' a' ;
10
+ }
11
+ ++i;
12
+
13
+ while (i < len)
14
+ {
15
+ if (s[i] == ' ?' )
16
+ {
17
+ if (i+1 < len && s[i+1 ] != ' ?' )
18
+ {
19
+ char c = s[i-1 ] < s[i+1 ] ? s[i-1 ] : s[i+1 ];
20
+ if (c == ' z' )
21
+ s[i] = ' a' ;
22
+ else
23
+ s[i] = c+1 != s[i-1 ]+s[i+1 ]-c ? c+1 : (c+1 < ' z' ? c+2 : ' a' );
24
+ }
25
+ else
26
+ s[i] = s[i-1 ] < ' z' ? s[i-1 ]+1 : ' a' ;
27
+ }
28
+ ++i;
29
+ }
30
+
31
+ return s;
32
+ }
Original file line number Diff line number Diff line change
1
+ int specialArray (vector<int >& nums) {
2
+ int len = nums.size ();
3
+ sort (nums.begin (), nums.end ());
4
+ map<int , int > mp;
5
+ int k = nums[len-1 ];
6
+ mp[k] = 1 ;
7
+ for (int i = len-2 ; i >= 0 ; --i)
8
+ {
9
+ if (nums[i] == k)
10
+ {
11
+ mp[k]++;
12
+ }
13
+ else
14
+ {
15
+ mp[nums[i]] = mp[k] + 1 ;
16
+ k = nums[i];
17
+ }
18
+ }
19
+
20
+ int n = mp.begin ()->first ;
21
+ for (auto iter = mp.begin (); iter != mp.end (); ++iter)
22
+ {
23
+ if (iter->first == iter->second )
24
+ return iter->first ;
25
+ else if (iter->first > iter->second )
26
+ {
27
+ if (iter == mp.begin () || iter->second > n)
28
+ return iter->second ;
29
+ }
30
+ n = iter->first ;
31
+ }
32
+
33
+ return -1 ;
34
+ }
Original file line number Diff line number Diff line change
1
+ char slowestKey (vector<int >& releaseTimes, string keysPressed) {
2
+ int len = releaseTimes.size ();
3
+ int maxtime = releaseTimes[0 ];
4
+ char c = keysPressed[0 ];
5
+ for (int i = 1 ; i < len; ++i)
6
+ {
7
+ int duration = releaseTimes[i] - releaseTimes[i-1 ];
8
+ if (duration > maxtime)
9
+ {
10
+ maxtime = duration;
11
+ c = keysPressed[i];
12
+ }
13
+ else if (duration == maxtime)
14
+ {
15
+ if (keysPressed[i] > c)
16
+ c = keysPressed[i];
17
+ }
18
+ }
19
+
20
+ return c;
21
+ }
Original file line number Diff line number Diff line change
1
+ int getMaximumGenerated (int n) {
2
+ if (n <= 1 )
3
+ return n;
4
+
5
+ vector<int > vec (n+1 , 0 );
6
+ vec[0 ] = 0 ;
7
+ vec[1 ] = 1 ;
8
+ int i = 2 ;
9
+ int maxvalue = 1 ;
10
+ while (i <= n)
11
+ {
12
+ if (i%2 == 0 )
13
+ vec[i] = vec[i/2 ];
14
+ else
15
+ vec[i] = vec[i/2 ] + vec[i/2 +1 ];
16
+ if (vec[i] > maxvalue)
17
+ maxvalue = vec[i];
18
+ ++i;
19
+ }
20
+
21
+ return maxvalue;
22
+ }
Original file line number Diff line number Diff line change
1
+ int maximumUnits (vector<vector<int >>& boxTypes, int truckSize) {
2
+ int len = boxTypes.size ();
3
+ auto cmp = [&boxTypes](const vector<int >& a, const vector<int >& b) {
4
+ return a[1 ] > b[1 ] || (a[1 ]==b[1 ] && a[0 ] > b[0 ]);
5
+ };
6
+
7
+ sort (boxTypes.begin (), boxTypes.end (), cmp);
8
+
9
+ int i = truckSize;
10
+ int j = 0 ;
11
+ int sum = 0 ;
12
+ while (i > 0 && j < len)
13
+ {
14
+ int n = boxTypes[j][0 ] <= i ? boxTypes[j][0 ] : i;
15
+ sum += n*boxTypes[j][1 ];
16
+ i -= n;
17
+ ++j;
18
+ }
19
+
20
+ return sum;
21
+ }
Original file line number Diff line number Diff line change
1
+ int totalMoney (int n) {
2
+ int p = n/7 ;
3
+ int r = n%7 ;
4
+ int sum = 28 *p + p*(p-1 )*7 /2 ;
5
+
6
+ return sum + ((p+1 )+(p+r))*r/2 ;
7
+ }
You can’t perform that action at this time.
0 commit comments