- 大数加法
概述:很多时候在进行大数运算时,也就是可能成百位的数字进行加法时,int甚至long 都无法运算,那么我们可以用字符串代替。
代码:
#include <iostream>
#include <string>
using namespace std;
string GetSum(string str1,string str2)
{
if(str1.size() < str2.size())
{
string temp = str1;
str1 = str2;
str2 = temp;
}
int len1 = str1.size();
int len2 = str2.size();
int num1,num2;
bool flag = 0;
while(len1 > 0)
{
num1 = str1[len1-1]-'0';
if(len2 > 0)
num2 = str2[len2-1]-'0';
else
num2 = 0;
int sum = num1+num2+flag;
if(sum >= 10)
{
flag = 1;
str1[len1-1] = '0'+sum%10;
}
else
{
flag = 0;
str1[len1-1] = sum+'0';
}
len1--;
len2--;
}
if(flag == 1)
str1 = "1"+str1;
return str1;
}
int main()
{
string str1;
string str2;
cin>>str1;
cin>>str2;
string res = GetSum(str1,str2);
cout<<res<<endl;
system("pause");
return 0;
}
- leetcode145-二叉树后序遍历(非递归)
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
vector<int> vec;
if(!root) return vec;
stack<TreeNode *> sk;
TreeNode *pTemp = nullptr;
while(!sk.empty() || root)
{
while(root)
{
sk.push(root);
root = root->left;
}
root = sk.top();
if(root->right==nullptr || root->right==pTemp)
{
vec.push_back(root->val);
sk.pop();
pTemp = root;
root = nullptr;
}
else
{
root = root->right;
}
}
return vec;
}
};
- leetcode96-二叉树中序遍历
代码:
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> vec;
if(!root) return vec;
stack<TreeNode *> sk;
while(!sk.empty() || root)
{
while(root)
{
sk.push(root);
root = root->left;
}
root = sk.top();
vec.push_back(root->val);
sk.pop();
if(root->right)
root = root->right;
else
root = nullptr;
}
return vec;
}
};
- leetcode144-二叉树前序遍历
代码:
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> vec;
if(!root)
return vec;
stack<TreeNode *> sk;
while(!sk.empty() || root)
{
while(root)
{
vec.push_back(root->val);
sk.push(root);
root = root->left;
}
root = sk.top();
sk.pop();
if(root->right)
root = root->right;
else
root = nullptr;
}
return vec;
}
};