Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. class Solution {
  2. public:
  3. void calc_f (vector <int> & res , vector <string> &words)
  4. {
  5. vector <int> freq (26);
  6. int min_c = INT_MAX;
  7.  
  8. for (int i = 0 ; i < words.size(); i++)
  9. {
  10. int min_c = INT_MAX;
  11. fill(freq.begin(), freq.end(), 0);
  12.  
  13. string cur_w = words[i];
  14.  
  15. for (int j = 0 ; j < cur_w.size(); j++)
  16. {
  17. int c = words[i][j] - 'a';
  18. freq[c]++;
  19. min_c = min (min_c, c);
  20. }
  21. res.push_back (freq[min_c]);
  22. }
  23.  
  24. }
  25. int my_upper_bound (vector <int> &arr , int val)
  26. {
  27. int l = 0 , r = arr.size() - 1;
  28. int ans = 0;
  29. while (l <= r)
  30. {
  31. int m = l + (r - l)/2;
  32.  
  33. if (arr[m] <= val)
  34. {
  35. l = m + 1;
  36. ans = l;
  37. }
  38. else
  39. {
  40.  
  41. r = m - 1;
  42. }
  43. }
  44.  
  45.  
  46. return ans;
  47. }
  48. vector<int> numSmallerByFrequency(vector<string>& queries, vector<string>& words) {
  49.  
  50. vector <int> f_w ;
  51. vector <int> f_q ;
  52. vector <int> res;
  53.  
  54. calc_f (f_w, words);
  55. calc_f (f_q, queries);
  56. sort(f_w.begin() , f_w.end());
  57.  
  58. int up;
  59. for (int i = 0 ; i < f_q.size(); i++ )
  60. {
  61. up = my_upper_bound(f_w, f_q[i]);
  62.  
  63. int p = f_w.size() - up;
  64.  
  65. res.push_back ( p );
  66. }
  67. return res;
  68. }
  69. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement