不使用除法的“除法”
题目:
给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。
注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。
示例 1:
输入:
s = “barfoothefoobarman”,
words = [“foo”,“bar”]
输出:[0,9]
解释:
从索引 0 和 9 开始的子串分别是 “barfoo” 和 “foobar” 。
输出的顺序不重要, [9,0] 也是有效答案。
示例 2:
输入:
s = “wordgoodgoodgoodbestword”,
words = [“word”,“good”,“best”,“word”]
输出:[]
提高效率快速逼近结果
举个例子:11 除以 3 。
首先11比3大,结果至少是1, 然后我让3翻倍,就是6,发现11比3翻倍后还要大,那么结果就至少是2了,那我让这个6再翻倍,得12,11不比12大,吓死我了,差点让就让刚才的最小解2也翻倍得到4了。但是我知道最终结果肯定在2和4之间。也就是说2再加上某个数,这个数是多少呢?我让11减去刚才最后一次的结果6,剩下5,我们计算5是3的几倍,也就是除法,看,递归出现了。
class Solution {public int divide(int dividend, int divisor) {if (dividend == 0) return 0;if (divisor == 1) return dividend;if (divisor == -1) {//防止溢出if (dividend > Integer.MIN_VALUE) return -dividend;// 只要不是最小的那个整数,都是直接返回相反数就好啦return Integer.MAX_VALUE;// 是最小的那个,那就返回最大的整数啦}long a = dividend;long b = divisor;int sign = 1;if ((a > 0 && b < 0) || (a < 0 && b > 0)) {sign = -1;}a = a > 0 ? a : -a;b = b > 0 ? b : -b;int res = div(a, b);if (sign > 0) return res;return -res;}private int div(long a, long b) {if (a < b) return 0;int count = 1;long tb = b; // 在后面的代码中不更新bwhile ((tb + tb) <= a) {count = count + count; // 最小解翻倍tb = tb + tb; // 当前测试的值也翻倍}return count + div(a - tb, b);}public static void main(String[] args) {Solution solution = new Solution();int divide = solution.divide(-2147483648, 2);System.out.println("divide result: " + divide);}
}
链接:https://leetcode-cn.com/problems/substring-with-concatenation-of-all-words
不使用除法的“除法”相关推荐
- c语言实现辗除法,辗除法什么东西哦?
辗除法什么东西哦? 输入两个正整数m和n,求其最大公约数和最小公倍数. #include "stdio.h" #include "conio.h" main() ...
- [Python中的除法、除法取整、除法取余] [运算符分别为:/、//、%]
选择题 以下代码输出结果正确的是: a,b,c = 2,3,11 x = c // a y = c % b z = x / y print(x, y, z) 选项: A 5.5 2 2 B ...
- python除法保留小数_python中的除法_python中除法_python 除法_python 除法保留小数
首先要说的是python中的除法运算,在python 2.5版本中存在两种除法运算,即所谓的true除法和floor除法.当使用x/y形式进行除法运算时,如果x和y都是整形,那么运算的会对结果进行截 ...
- 怎样用计算机计算分数除法,分数除法的计算方法
课 时 授 课 计 划章节题目二.分数除法(1-1)教学目的1理解分数除法的意义,掌握分数除法的计算方法.2进一步培养学生抽象概括的能力和计算能力.3进一步渗透转化的数学思想.教学重点理解分数除法的意 ...
- 分数用计算机怎么分数除法,分数除法怎么算
教学目标1.使学生掌握除法估算的方法,会进行两位数的除法估算.2.培养学生估算的意识,归纳概括.迁移类推的能力,以及应用所学知识灵活解决实际问题的能力.3.培养学生学习数学的兴趣,自主探索.勇于尝试的 ...
- 计算机原理中的二进制除法,多字节除法--汇编实现原理
2.1长除法 长除法适用于整式除法.小数除法.多项式除法(即因式分解)等较重视计算过程和商数的除法,过程中兼用了乘法和减法. 长除法与手工计算除法方法一致. 以8592÷24为例: 从计算过程可以看出 ...
- 手提计算机键盘中的除法,手提电脑除法是哪个键
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 手提电脑没有除法键,一般用斜杠键代替,/就相当于除法符号,在日常生活中用到的符号在键盘上是没有的. 笔记本电脑(NoteBook ...
- php 除法,php除法函数是什么
php除法函数有3个,分别是:1.round函数,用于对浮点数进行四舍五入:2.ceil函数用于向上舍入为最接近的整数:3.floor函数,用于向下舍入为最接近的整数. php中除法取整的方法(rou ...
- php 除法,php除法函数有哪些
php除法函数有哪些 发布时间:2020-08-29 10:04:40 来源:亿速云 阅读:111 作者:小新 这篇文章给大家分享的是有关php除法函数有哪些的内容.小编觉得挺实用的,因此分享给大家做 ...
最新文章
- Vi非正常退出导致敏感信息泄露
- mysql-4.0.20 use on scounix 5.0.7 error :dynamic linker:..:could not open libgthreads.so help!!!!
- 膨胀和腐蚀之外的其他形态学变换
- hdu 4568 bfs + 状压dp
- Linux下安装oracle数据库步骤
- 1.Swift教程翻译系列——关于Swift
- 为什么栈的数组长度必须是一个常量?而堆的数组长度可以是变量。为什么栈的大小有限制?
- 【王道计组笔记】总线(4):总线操作和定时
- mysql 分表后如何扩展_MySQL横向扩展-分库分表解决方案总结
- Android Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x10 in tid 5287 (HeapTaskDaemo
- redis统计用户日活量_【赵强老师】Redis案例分析:用setbit统计活跃用户
- UE4联网机制和多人游戏总结 (第一部分)
- 360无线路由器dns服务器,路由器的首选dns服务器怎么填
- HTB靶场 Shared
- php guzzlehttp,PHP 使用 Guzzle 发送 HTTP 请求
- Android端+java后端+servlet+MySQL的型男塑造平台【前后端源代码+论文+答辩ppt】
- 安卓手机电脑投屏软件【apowermirror、虫洞投屏软件】
- SQL Server 数据库之常量
- k8spod生命周期
- Windows 10共享打印机无法打印 \ office/wps运行时出现卡死并显示“未响应“的解决方法