leetcode:Divide Two Integers + …
来源:互联网 发布:睡了兄弟的女朋友知乎 编辑:程序博客网 时间:2024/04/30 02:07
Divide Two Integers:
这道题难度不是很大,主要是细节问题,大意是求两个数相除,不能用乘除法和取模。
思路就是被除数不断减去除数,直到被除数小于除数为止。加快效率的办法是位运算,除数不断左移(相当于不断乘2),找到刚好小于被除数的那个数,与被除数相减。此时答案ans+=(1<<k),其中k是除数左移的次数,即左移了k次,相当于减去了2^k个除数。
几个需要注意的点:
1、记得判断正负,我这里处理的办法是全部转为正数
2、负数最大值(-2147483648)的绝对值比最大正数还大,因此不能简单的取负号,不然处理后会得到0.
3、这个是个人犯二,a<<1只是得到一个左移一次的数,a本身没变,要a<<=1才是改变了a的值。
Substring with Concatenation of All Word:
题意是给出一个字符串S如wordgoodgoodgoodbestword
再给出一个字符串vector如{ "word", "good", "best", "good" }
找出S中的下标,使得从该下标开始的一个子串,可以包含vector中所有单词(任意顺序,但不能有其他字符),比如例子中,S[8]符合要求。单词长度固定。注意,符合要求的下标可能有多个。
主要思路是设置一个mapdict,里面记录了数组中每个单词出现的次数,再另开一个mapsheet,然后从前往后扫描S,遇到符合要求的,就把sheet对应元素加1,如果没超过dict中的计数,那么就看紧接着该词的下一个单词,是否符合要求,以此类推。
这样做是可以过的,不过看答案的时间效率分布图,好像有一种快了很多的方法,估计是这样的:比如上面例子中有一段是goodgoodgood,而vector中只有两个good,那么就设置一个判定,直接从第二个good开始往后扫描,这样应该可以节约一定时间。
阅读全文
0 0
- leetcode:Divide Two Integers + …
- leetcode:Remove Element + Imple…
- leetcode:Shuffle an Array + Miss…
- leetcode:Integer to Roman + Fin…
-  
- 集线器 交换机 路由器 网桥 …
- Two life , for one thing
-
- 使用BBED修改SCN …
- Video for Linux Two API Specific…
- Video for Linux Two API Specific…
- 走着瞧A Tale of Two Donkeys (200…
- Two bluetooth related blogs
- Hive安装 …
- android o…
- android …
- [转] 彼尔…
- “constructors not allowed …
- 普通选项卡切换
- 自制lenet:从获取数据到网络编写…
- leetcode:Remove Element + Imple…
- MATLAB使用备注(二)
- 在linux下挂载、更新与定制硬盘
- leetcode:Divide Two Integers + …
- LINUXmint18.2添加国内源以及安装各种流行软件(网易云音乐,搜狗,谷歌浏览器,virtualbox虚拟机)
- leetcode:Next Permutation + Lon…
- C#枚举所有串口COM
- 数据库的锁表和解锁操作
- leetcode:Fraction to Recurring …
- leetcode:Single Number123 …
- leetcode:Linked List Random Node…
- leetcode:Shuffle an Array + Miss…