隔了好久好久好久好久开始做题~要坚持下去鸭!
Num 67 二进制求和 以后不贴英文名字了
class Solution { public: string addBinary(string a, string b) { int lena=a.length(); int lenb=b.length(); string c; int ans[1000]; char ansc[1000]; memset(ans,0,sizeof(ans)); memset(ansc,0,sizeof(ansc)); for(int i=0;i<=min(lena,lenb)-1;i++) { ans[i]=ans[i]+(int)(a[lena-1-i]-48)+(int)(b[lenb-1-i]-48); ans[i+1]=ans[i]/2; ans[i]%=2; } if(lena>lenb) { for(int i=lenb;i<lena;i++) { ans[i]=ans[i]+(int)(a[lena-1-i]-48); ans[i+1]=ans[i]/2; ans[i]%=2; } } else if(lenb>lena) { for(int i=lena;i<lenb;i++) { ans[i]=ans[i]+(int)(b[lenb-1-i]-48); ans[i+1]=ans[i]/2; ans[i]%=2; } } if(ans[max(lena,lenb)]==0) { for(int i=0;i<max(lena,lenb);i++) ansc[i]=ans[max(lena,lenb)-i-1]+48; } else for(int i=0;i<=max(lena,lenb);i++) ansc[i]=ans[max(lena,lenb)-i]+48; c=ansc; return c; } };
很简单,注意一下最后如果有0的话需要删掉
估计可以优化代码,基本一致的代码来回写了两次,先码回头改
Num 101 对称二叉树
刚开始的时候直接在isSymmetric里面迭代,这样的判断是左右左右完全一样的,不是对称的
只要稍加修改代码就行
另外注意
判断isMirror(root,root)而不使用左右孩子,因为在输入一个空树的时候会报错访问null的左右
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSymmetric(TreeNode* root) { return isMirror(root,root); } bool isMirror(TreeNode *t1,TreeNode*t2) { if(t1==NULL && t2==NULL) return true; if(t1==NULL||t2==NULL) return false; return (t1->val==t2->val && isMirror(t1->right,t2->left) && isMirror(t1->left,t2->right)); } };