Skip to content

Commit 8df55e0

Browse files
committed
random
1 parent 412a67b commit 8df55e0

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed

Leetcode/Math/plus-one.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
public:
3+
vector<int> plusOne(vector<int>& digits) {
4+
5+
vector<int> res(digits.begin(), digits.end());
6+
7+
reverse(res.begin(), res.end());
8+
9+
int carry=1;
10+
11+
for(int i=0;i<res.size();i++)
12+
{
13+
int temp=(res[i]+carry)/10;
14+
res[i]=(res[i]+carry)%10;
15+
carry=temp;
16+
}
17+
18+
if(carry!=0)
19+
res.push_back(carry);
20+
21+
reverse(res.begin(), res.end());
22+
23+
return res;
24+
}
25+
};
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
13+
//O(N^2) time complexity
14+
class Solution {
15+
public:
16+
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
17+
18+
19+
return helper(nums, 0, nums.size()-1);
20+
21+
22+
}
23+
24+
25+
TreeNode* helper(vector<int> &nums, int left, int right )
26+
{
27+
if(left>right)return NULL;
28+
29+
int max_index = left;
30+
for(int i = left; i<=right; i++){
31+
if(nums[i] > nums[max_index])max_index = i;
32+
}
33+
34+
TreeNode* root = new TreeNode(nums[max_index]);
35+
root->left = helper(nums, left, max_index - 1);
36+
root->right = helper(nums, max_index + 1, right);
37+
return root;
38+
}
39+
40+
41+
};
42+
43+
//======================================O(N) solution using stack
44+
45+
/**
46+
* Definition for a binary tree node.
47+
* struct TreeNode {
48+
* int val;
49+
* TreeNode *left;
50+
* TreeNode *right;
51+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
52+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
53+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
54+
* };
55+
*/
56+
class Solution {
57+
public:
58+
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
59+
60+
61+
stack<TreeNode*> s;
62+
for(int num:nums)
63+
{
64+
TreeNode* curr=new TreeNode(num);
65+
66+
while(!s.empty()&& s.top()->val<curr->val)
67+
{
68+
curr->left=s.top();
69+
s.pop();
70+
}
71+
72+
if(!s.empty())
73+
s.top()->right=curr;
74+
75+
s.push(curr);
76+
}
77+
78+
while(s.size()>1)
79+
s.pop();
80+
81+
return s.top();
82+
83+
84+
}
85+
86+
87+
88+
89+
};

0 commit comments

Comments
 (0)