leetcode第一刷_Add Binary
二进制相加,本质上就是大整数加法,有关大整数加法我的舍友教过我一个非常好的方法,先用一个int数组保存结果,将两个数相应位置相加,所有加完后。再统一处理进位的问题。这种方法相同适用于大整数的乘法。
这个题没什么特别的,注意一下进位别搞错了即可了,还有事实上不用像我写的这么麻烦,能够一開始先推断哪个更长一些。交换一下。代码会简洁非常多。
class Solution {
public:
string addBinary(string a, string b) {
int l1 = a.length(), l2 = b.length();
string c(max(l1, l2)+1, '0');
int i1 = l1-1, i2 = l2-1, ch=0, k = max(l1, l2);
while(i1>=0&&i2>=0){
if(a[i1] == '1' && b[i2] == '1'){
c[k--] = ch+'0';
ch = 1;
}else if(a[i1]=='1'||b[i2]=='1'){
if(ch){
c[k--] = '0';
}else{
c[k--] = '1';
}
}else{
c[k--] = '0'+ch;
ch = 0;
}
i1--; i2--;
}
while(i1>=0){
if(ch){
if(a[i1] == '1'){
c[k--] = '0';
ch = 1;
}else{
c[k--] = '1';
ch = 0;
}
}else{
c[k--] = a[i1];
}
i1--;
}
while(i2>=0){
if(ch){
if(b[i2] == '1'){
c[k--] = '0';
ch = 1;
}else{
c[k--] = '1';
ch = 0;
}
}else{
c[k--] = b[i2];
}
i2--;
}
if(ch)
c[0] = '1';
if(c[0] == '0')
c = c.substr(1, c.length()-1);
return c;
}
};
leetcode第一刷_Add Binary的更多相关文章
- leetcode第一刷_Validate Binary Search Tree
有了上面的教训,这道题就简单多了,什么时候该更新pre是明白的了,倒是有个细节,二叉搜索树中是不同意有相等节点的,所以题目的要求用黑体字标明了.写的时候注意就能够了. class Solution { ...
- leetcode第一刷_Construct Binary Tree from Preorder and Inorder Traversal
构造方式跟中序与后序全然一样,并且一般都习惯正着来,所以更简单. 代码是之前写的,没实用库函数,不应该. TreeNode *buildIt(vector<int> &preord ...
- leetcode第一刷_Construct Binary Tree from Inorder and Postorder Traversal
这道题是为数不多的感觉在读本科的时候见过的问题. 人工构造的过程是如何呢.兴许遍历最后一个节点一定是整棵树的根节点.从中序遍历中查找到这个元素,就能够把树分为两颗子树,这个元素左側的递归构造左子树,右 ...
- leetcode第一刷_Unique Binary Search Trees
这道题事实上跟二叉搜索树没有什么关系,给定n个节点,让你求有多少棵二叉树也是全然一样的做法.思想是什么呢,给定一个节点数x.求f(x),f(x)跟什么有关系呢,当然是跟他的左右子树都有关系.所以能够利 ...
- leetcode第一刷_Balanced Binary Tree
二叉平衡树好火啊.差点儿每一个公司的笔试题里都有它.考了好多次我都不会,挂笔试非常有可能就是由于它.另一个它的同伙叫二叉搜索树,貌似人气比它还要高一些. 二叉平衡树是什么样的树呢.是每一个节点的左右子 ...
- leetcode第一刷_Convert Sorted List to Binary Search Tree
好,二叉搜索树粉末登场,有关他的问题有这么几个,给你一个n,如何求全部的n个节点的二叉搜索树个数?能不能把全部的这些二叉搜索树打印出来? 这道题倒不用考虑这么多,直接转即可了,我用的思想是分治,每次找 ...
- leetcode第一刷_Maximum Depth of Binary Tree
这道题预计是ac率最高的一道了.你当然能够用层序遍历,我佩服你的耐心和勇气.由于看到别人的三行代码,会不会流眼泪呢.. class Solution { public: int maxDepth(Tr ...
- leetcode第一刷_ Flatten Binary Tree to Linked List
提示中说明了,改动后的链表相当于原树的前序遍历结果.前序遍历是根左右,因为要把转换后的左子树链接到根节点的右子树上,因此进入递归之后要先把节点的右子树保存下来,然后进入左子树,左子树转换后应该返回最后 ...
- leetcode第一刷_Convert Sorted Array to Binary Search Tree
晕.竟然另一样的一道题.换成sorted array的话.找到中间位置更加方便了. TreeNode *sortTree(vector<int> &num, int start, ...
随机推荐
- 初次使用Android Studio时的配置
一.第一次安装: Android Studio安装完毕后,第一次启动AS前.为了避免又一次下载新版本号的SDK.操作例如以下: AS启动前.请先将bin文件夹的idea.properties文件里添加 ...
- python面向对象与结构成员之间的关系
1面向对象结构分析:----面向对象整体大致分为两块区域:-------第一部分:静态字段(静态变量)部分-------第二部分:方法部分--每个区块可以分为多个小部分 class A: countr ...
- POJ 1414 暴搜
题意比较复杂 (但是很好理解) 大概意思是给你等边三角形(详见题目中的图). 最后一行有n个数,下一次要填的数是c. 里面预先已经填好了数字.(0为未填) 得分的标准是这个分数的连通块周围没有空的地方 ...
- Spring《五》集合的注入方式
List.Set.Map.Properties 1.List <property name="msg"> <list> <value>gf< ...
- Spark编程模型几大要素
不多说,直接上干货! Spark编程模型几大要素 Driver Program 输入-Transformation-Action 缓存 共享变量
- Haskell手撸Softmax回归实现MNIST手写识别
Haskell手撸Softmax回归实现MNIST手写识别 前言 初学Haskell,看的书是Learn You a Haskell for Great Good, 才刚看到Making Our Ow ...
- js浏览器问题
前段时间做了个项目,里面关于手机移动端下载的问题 开始是判断微信.ios和android系统的下载 因为微信屏蔽点击事件和链接的缘故,需要通过打开新页面来进行下载 ios和android的下载分别为不 ...
- spring使用注解开发
1.准备工作(1)导入common-annotations.jar(2)导入schema文件 文件名为spring-context-2.5.xsd(3)在xml的beans节点中配置 service层 ...
- BZOJ 5180 [Baltic2016]Cities(斯坦纳树)
斯坦纳树的板子题. 斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种. 最小生成树是在给定的点集和边中寻求最短网络使所有点连通. 而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网 ...
- [读书笔记] Python 数据分析 (十一)经济和金融数据应用
resample: 重采样函数,可以按照时间来提高或者降低采样频率,fill_method可以使用不同的填充方式. pandas.data_range 的freq参数枚举: Alias Descrip ...