当前位置: 首页 > news >正文

沈阳网站建设那家好从山海经取公司名三个字

沈阳网站建设那家好,从山海经取公司名三个字,做网站遇到各种问题,网站建设违约合同目录 1. 二进制求和(简单) 2. 两数相加(中等) 3. 两数相除(中等) 4. 字符串相乘(中等) 1. 二进制求和(简单) 从字符串的右端出发向左做加法,…

目录

1. 二进制求和(简单)

2. 两数相加(中等)

3. 两数相除(中等)

4. 字符串相乘(中等)


1. 二进制求和(简单)

从字符串的右端出发向左做加法,逢二进一。

class Solution {
public:string addBinary(string a, string b) {string ans;int i = a.size() - 1; // a的下标是从0到iint j = b.size() - 1; // b的下标是从0到jint carry = 0 ; // 进位while (i >= 0 || j >= 0){int digitA = i >= 0 ? a[i--] - '0' : 0;int digitB = j >= 0 ? b[j--] - '0' : 0;int sum = digitA + digitB + carry;carry = sum >= 2 ? 1 : 0;sum = sum >= 2 ? sum - 2 : sum;ans += sum + '0';}if (carry){ans += '1';}reverse(ans.begin(), ans.end());return ans;}
};

2. 两数相加(中等)

class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* preHead = new ListNode; // 哨兵节点ListNode* tail = preHead;int carry = 0; // 进位while (l1 || l2){int n1 = l1 ? l1->val: 0;int n2 = l2 ? l2->val: 0;int sum = n1 + n2 + carry;tail->next = new ListNode(sum % 10);carry = sum / 10;tail = tail->next;if (l1){l1 = l1->next;}if (l2){l2 = l2->next;}}if (carry){tail->next = new ListNode(carry);}return preHead->next;}
};

3. 两数相除(中等)

假设被除数是a,除数是b。

如果a、b都是正数,且a>=b

a最多大于b的2^k倍,将a减去b的2^k倍,剩下的被除数再重复这样的操作,直到a < b

以22除以3为例:

22最多大于3的4倍:22 - 3 * 4 = 10

10最多大于3的2倍:10 - 3 * 2 = 4

4最多大于3的1倍: 4 - 3 * 1 = 1

商是4 + 2 + 1 = 7,余数是1

如果a、b都是负数,且a <= b

a最多小于b的2^k倍,将a减去b的2^k倍,剩下的被除数再重复这样的操作,直到a > b

以-22除以-3为例:

-22最多小于-3的4倍:-22 - (-3) * 4 = -10

-10最多小于-3的2倍:-10 - (-3) * 2 = -4

-4最多小于-3的1倍: -4 - (-3) * 1 = -1

商是4 + 2 + 1 = 7,余数是-1

class Solution {
public:int divide(int dividend, int divisor) {// -2^31/-1=2^31 溢出if (dividend == INT_MIN){if (divisor == -1){return INT_MAX;}else if (divisor == 1){return INT_MIN;}}// 全部转化为负数,如果全部转化为正数,-2^31转化为正数会溢出int negative = 2; // 表示被除数和除数有几个是负数if (dividend > 0){dividend = -dividend;negative--;}if (divisor > 0){divisor = -divisor;negative--;}int result = divideCore(dividend, divisor);return negative == 1 ? -result : result;}private:int divideCore(int a, int b){int result = 0;while (a <= b){int k = 1;int val = b; // val表示b的2^k倍while (val >= INT_MIN / 2 && a <= val + val){k += k;val += val;}result += k;a -= val;}return result;}
};

4. 字符串相乘(中等)

无进位相乘后相加,再处理进位。

class Solution {
public:string multiply(string num1, string num2) {if (num1 == "0" || num2 == "0")return "0";int n1 = num1.size();int n2 = num2.size();reverse(num1.begin(), num1.end());reverse(num2.begin(), num2.end());vector<int> sums(n1 + n2 -1);// 无进位相乘后相加for (int i = 0; i < n2; i++){for (int j = 0; j < n1; j++){sums[i + j] += (num2[i] - '0') * (num1[j] - '0');}}// 处理进位string ans;int i = 0;int carry = 0;while (i < n1 + n2 -1){int sum = sums[i++] + carry;ans += sum % 10 + '0';carry = sum / 10;}if (carry){ans += carry + '0';}// 反转reverse(ans.begin(), ans.end());return ans;}
};
http://www.yayakq.cn/news/288367/

相关文章:

  • 评测网站做的那些条形图wordpress+免费博客
  • 网站建设高前端开发的工作内容
  • 咖啡网站建设黄冈seo顾问
  • 网站主机多少钱跑胡子网站开发
  • 营销网站制作公司中国建设教育协会培训报名网站
  • 会设计网站怎么做兼职莱芜金点子招工招聘
  • 网站关键词排名优化应该怎么做兰州网站推广公司
  • 学设计的网站有哪些内容北京市朝阳区网站制作
  • 可以免费推广的网站wordpress内存要求
  • 网站设计深圳市东莞网络推广优化排名
  • 网站排名下降怎么办邮箱域名
  • 展厅设计施工一体化唐山seo公司
  • 北京网站建设解决方案网站开发与应用 大作业作业
  • 网站支付怎么做足球比赛直播在线观看免费
  • 网站制图软件哪个网站可以给图片做链接
  • asp.net网站部署教程网站模板后台
  • 安装网站怎么做网站跳转
  • 大连公司排名seo搜索引擎优化实训报告
  • 工艺礼品东莞网站建设注册餐饮公司流程和费用
  • 电影网站开发技术青岛网络建站公司
  • 内江建网站网易导入到wordpress图片
  • vs2013可以做网站么做网站电话说辞
  • 广西医科大学网站建设临沧网站开发
  • 做直播网站需要多少钱wordpress同步到报价号
  • 在线网站建设工程标准住房和城乡建设部政务服务官网
  • 手机wap网站大全王展简历
  • 外贸网站有哪些?wordpress缩略图代码显示
  • 石家庄网站建设加王道下拉科技公司网站系统
  • 网站开发天津51找呀模板网
  • 网站开发 开票网页翻译软件哪个好