Advertisement
Guest User

Untitled

a guest
May 24th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. / Binary Search
  2. class Solution_BS {
  3. public:
  4. vector<int> countSmaller(vector<int>& nums) {
  5. vector<int> t, res(nums.size());
  6. for (int i = nums.size() - 1; i >= 0; --i) {
  7. int left = 0, right = t.size();
  8. while (left < right) {
  9. int mid = left + (right - left) / 2;
  10. if (t[mid] >= nums[i]) right = mid;
  11. else left = mid + 1;
  12. }
  13. res[i] = right;
  14. t.insert(t.begin() + right, nums[i]);
  15. }
  16. return res;
  17. }
  18. int takeMost(vector<int> nums){
  19. vector<vector<int>> dp(nums.size(), vector<int>(nums.size()));
  20. for(int len=1; len<=nums.size(); len++){
  21. for(int i=0; i+len-1<=nums.size()-1; i++){
  22. int j = i+len-1;
  23. if(j-i==0){
  24. dp[j][i] = nums[i];
  25. }else if(j-i==1){
  26. dp[j][i] = max(nums[j], nums[i]);
  27. }else{
  28. dp[j][i] = max( nums[i]+ (nums[i+1]>nums[j]? dp[j][i+2]:dp[j-1][i+1]), nums[j]+ (nums[i]>nums[j-1]? dp[j-1][i+1]:dp[j-2][i]) );
  29. }
  30. }
  31. }
  32. }
  33.  
  34. int applyOp(char op, int b, int a)
  35. {
  36. switch (op)
  37. {
  38. case '+':
  39. return a + b;
  40. case '-':
  41. return a - b;
  42. case '*':
  43. return a * b;
  44. case '/':
  45. return a / b;
  46. }
  47. return 0;
  48. }
  49.  
  50. void updateStack(stack<int>& operands, stack<char>& operators){
  51. if(!operators.empty() && operators.top() != '('){
  52.  
  53. int num2 = operands.top(); operands.pop();
  54. int num1 = operands.top(); operands.pop();
  55. char op = operators.top(); operators.pop();
  56. int value = applyOp(op, num2, num1);
  57. operands.push(value);
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement