剑指offer day2
13、机器人的运动范围 https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/
本题与上一题类似,是一个简单的dfs标记题。
1 | class Solution { |
提供一个BFS解法,BFS也是一个标准的模版.
1 | class Solution { |
14、剪绳子 https://leetcode-cn.com/problems/jian-sheng-zi-lcof/
题目意思很明确,给我们一根长度为n的绳子,把绳子剪成m段,使得最后的乘积最大.
- 我们应该尽可能地将绳子剪为3,多余的用2补齐。
- 如果长度为5,此时(2,3)>(1,4)。
- 如果长度为6,(3,3)>(2,2,2)。
- 往后同理,即我们最多只能留两个2,因为3段长度为2的绳子可以用两段长度为3的绳子代替
1 | class Solution { |
14-2 剪绳子II https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/
思路跟上一题是一样的
1 | class Solution { |
15、二进制中1的个数 https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/
利用语法
1 | public class Solution { |
利用位运算。把一个整数减-1,然后与原来的整数做与运算,会把最右边的数字由1变成0,我们记录这个次数
1 | public class Solution{ |
16、数值的整数次方 https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/
1 | class Solution { |
快速幂非递归
1 | class Solution { |
17、打印从1到最大的n位数 https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/
好像这一题对原题也有改动,具体的原题不记得了
1 | class Solution { |
18、删除链表的节点 https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/
本题相对于剑指offer原题进行了稍加改动
首先链表中各个节点的值互不相同,我们不必考虑重复节点的情况
1 | class Solution { |
递归解法
1 | class Solution { |
当然,本题的原题的题意给定一个单向链表的节点指针,定义一个函数在O(1)的时间内删除该节点.
假设链表一定存在,并且该节点一定不是尾节点。
1 | class Solution{ |
19、正则表达式匹配 https://leetcode-cn.com/problems/zheng-ze-biao-da-shi-pi-pei-lcof/
- 递归
1 | class Solution{ |
- 递归在写起代码来比较简单,但是效率属实不高,现在我们转用dp来做
1 | class Solution{ |
20、表示数值的字符串 https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/
个人感觉这道题是为测试人员所出的,各种奇形怪状的判定……
1 | class Solution { |
21、调整数组顺序使奇数位于偶数前面
本题是一道意思很明确的题目。如果我们利用额外的空间,可以很容易的解决这个问题,例如将奇数和偶数分别放在不同的集合中,然后在顺序放入。
我们也可以利用不需要额外空间复杂度的方法,我们可以利用快速排序中partation的过程,将奇数都放左边,偶数都放右边
1 | class Solution{ |