File tree Expand file tree Collapse file tree 5 files changed +150
-0
lines changed Expand file tree Collapse file tree 5 files changed +150
-0
lines changed Original file line number Diff line number Diff line change
1
+ vector<int > distributeCandies (int candies, int num_people) {
2
+ int turn = 1 ;
3
+ while (true )
4
+ {
5
+ int t = (1 +num_people*turn)*num_people*turn/2 ;
6
+ if (t >= candies)
7
+ break ;
8
+ ++turn;
9
+ }
10
+
11
+ vector<int > res (num_people, 0 );
12
+ for (int i = 1 ; i <= num_people; ++i)
13
+ res[i-1 ] = i*(turn-1 ) + (turn-1 )*(turn-2 )*num_people/2 ;
14
+ int i = 0 ;
15
+ candies -= (1 +(turn-1 )*num_people)*(turn-1 )*num_people/2 ;
16
+ while (candies > 0 && i < num_people)
17
+ {
18
+ int n = i+1 +(turn-1 )*num_people;
19
+ if (n <= candies)
20
+ {
21
+ res[i] += n;
22
+ candies -= n;
23
+ }
24
+ else
25
+ {
26
+ res[i] += candies;
27
+ break ;
28
+ }
29
+ ++i;
30
+ }
31
+
32
+ return res;
33
+ }
Original file line number Diff line number Diff line change
1
+ int tribonacci (int n) {
2
+ int arr[3 ] = {0 ,1 ,1 };
3
+ if (n <= 2 )
4
+ return arr[n];
5
+
6
+ for (int i = 3 ; i <= n; ++i)
7
+ {
8
+ int t = arr[0 ] + arr[1 ] + arr[2 ];
9
+ arr[0 ] = arr[1 ];
10
+ arr[1 ] = arr[2 ];
11
+ arr[2 ] = t;
12
+ }
13
+
14
+ return arr[2 ];
15
+ }
Original file line number Diff line number Diff line change
1
+ vector<int > numSmallerByFrequency (vector<string>& queries, vector<string>& words) {
2
+ int len = queries.size ();
3
+ int sz = words.size ();
4
+
5
+ vector<int > res (len, 0 );
6
+ vector<int > freq (sz, 0 );
7
+ for (int i = 0 ; i < sz; ++i)
8
+ freq[i] = calFreq (words[i]);
9
+ sort (freq.begin (), freq.end ());
10
+
11
+ for (int i = 0 ; i < len; ++i)
12
+ {
13
+ int t = calFreq (queries[i]);
14
+ auto iter = upper_bound (freq.begin (), freq.end (), t);
15
+ res[i] = freq.end () - iter;
16
+ }
17
+
18
+ return res;
19
+ }
20
+
21
+ int calFreq (const string& str)
22
+ {
23
+ int len = str.size ();
24
+ int ct = 1 ;
25
+ char minval = str[0 ];
26
+ for (int i = 1 ; i < len; ++i)
27
+ {
28
+ if (str[i] < minval)
29
+ {
30
+ minval = str[i];
31
+ ct = 1 ;
32
+ }
33
+ else if (str[i] == minval)
34
+ {
35
+ ++ct;
36
+ }
37
+ }
38
+
39
+ return ct;
40
+ }
Original file line number Diff line number Diff line change
1
+ int maxNumberOfBalloons (string text) {
2
+ int len = text.size ();
3
+ if (len <= 5 )
4
+ return 0 ;
5
+
6
+ int arr[5 ] = {0 };
7
+ for (int i = 0 ; i < len; ++i)
8
+ {
9
+ switch (text[i])
10
+ {
11
+ case ' a' :
12
+ arr[0 ]++;
13
+ break ;
14
+ case ' b' :
15
+ arr[1 ]++;
16
+ break ;
17
+ case ' l' :
18
+ arr[4 ]++;
19
+ break ;
20
+ case ' n' :
21
+ arr[2 ]++;
22
+ break ;
23
+ case ' o' :
24
+ arr[3 ]++;
25
+ break ;
26
+ }
27
+ }
28
+
29
+ arr[3 ] /= 2 ;
30
+ arr[4 ] /= 2 ;
31
+ int minnum = arr[0 ];
32
+ for (int i = 1 ; i < 5 ; ++i)
33
+ if (arr[i] < minnum)
34
+ minnum = arr[i];
35
+ return minnum;
36
+ }
Original file line number Diff line number Diff line change
1
+ int maxDepth (Node* root) {
2
+ if (root == nullptr )
3
+ return 0 ;
4
+ int maxdepth = 0 ;
5
+ maxdepth = search (root);
6
+
7
+ return maxdepth+1 ;
8
+ }
9
+
10
+ int search (Node* node)
11
+ {
12
+ auto & vec = node->children ;
13
+ int len = vec.size ();
14
+ if (len == 0 )
15
+ return 0 ;
16
+
17
+ int maxd = 0 ;
18
+ for (int i = 0 ; i < len; ++i)
19
+ {
20
+ int t = search (vec[i]);
21
+ if (t > maxd)
22
+ maxd = t;
23
+ }
24
+
25
+ return maxd+1 ;
26
+ }
You can’t perform that action at this time.
0 commit comments