【算法设计作业】week5
来源:互联网 发布:ubuntu jdk 1.7 下载 编辑:程序博客网 时间:2024/06/05 03:04
1.Divide Two Integers
来源:https://leetcode.com/problems/divide-two-integers/description/
题意
给出两个int数a,b,要求计算他们的商,不能使用乘、除、取模。
思路
- 很直接想法按照除法的定义,当a,b都大于0时,a不断减b,直到余数比b小,记录一共减了多少次,就是所求的答案。但是这样会超时。
- 这是参考答案的思路:我们可以不1个1个除数地除,而可以除数的指数倍来除。比如说,15/3,我们发现 15 > 3, 于是尝试 2*3=6, 发现15 > 6, 于是继续尝试 4 * 3 = 12,发现15 > 12,继续尝试12 * 2 = 24。 但是15 < 24,因而,15 - 12 = 3, 是余数,记录此时减掉了4个3。对余数3继续上述过程,需要减去1个3。总共加起来减去了4+1 = 5个3, 结果就是3.
代码
class Solution {public: int divide(int dividend, int divisor) { if(divisor == 0 || (dividend == INT_MIN && divisor == -1)) return INT_MAX; int sign = ((dividend < 0) ^ (divisor < 0)) ? -1: 1; long long dvd = labs(dividend); long long dvs = labs(divisor); int res = 0; while(dvd >= dvs) { long long temp = dvs, multiple = 1; while(dvd >= (temp << 1)) { temp <<= 1; multiple <<= 1; } dvd -= temp; res += multiple; } return sign == 1? res: -res; }};
阅读全文
0 0
- 【算法设计作业】week5
- 算法设计作业;贪心;
- 算法设计作业1
- 算法设计作业2
- 算法设计作业3
- 算法设计作业4
- 算法设计作业5
- 算法设计作业6
- 算法设计作业7
- 算法设计作业8
- 算法设计作业9
- 算法设计作业10
- 算法设计作业11
- 算法设计作业12
- 算法设计作业13
- 算法设计作业14
- 算法设计作业15
- 算法设计作业16
- 使用grub2引导iso文件安装ubuntu
- 2017 Google hosts 持续更新,配置后可访问外网(不定期更新)
- 数据挖掘(机器学习)面试 svm
- C++ 环境设置
- 实验二 线性表综合实验之静态链表
- 【算法设计作业】week5
- 钦妹的苹果树
- 安卓开发-开机时启动电话窃听service服务
- dede调用img图片src地址<img src="[field:litpic/]">
- 计蒜客 整数转换成罗马数字
- 深入理解浮点数
- 学习gcc,make,gdb相关知识
- Python3网页抓取urllib
- bzoj1296 [SCOI2009]粉刷匠 ( 分组背包DP )