剑指offer day7
57-2、和为s的连续整数序列 https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/
利用滑动窗口,标准的模版
1 | class Solution { |
58-1 反转单词顺序 https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/
本题可以直接利用API
1 | class Solution{ |
58-2左旋转字符串 https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
调用API
1 | class Solution { |
59-1 滑动窗口的最大值
维护一个单调递减的队列
1 | class Solution{ |
除了单调队列,我们还可以利用每次求一个窗口的最大值来实现
59-2队列的最大值 https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/
与上一题类似,都是滑动窗口的问题
1 | class MaxQueue{ |
60、n个骰子的点数 https://leetcode-cn.com/problems/nge-tou-zi-de-dian-shu-lcof/
首先我们求出一共会出现哪些骰子,然后求出总和。第一版通过dfs的方式实现,但是即使我们加上缓存,也会在最后一个案例超时。
1 | class Solution { |
接下来我们用dp的思路来解决这个问题,本题和背包问题特别类似,即我们关心最后一次取得的是哪一个骰子即可。
1 | class Solution { |
61、扑克牌中的顺子 https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/
在这里把大小王当成癞子
1 | class Solution{ |
62、圆圈中最后剩下的数字 https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/
常规解法,将所有人都放进一个数组中
1 | class Solution { |
数学解法,约瑟夫环问题
其中数学表达式为f(N,M)=(f(N-1,M)+M)%N
- f(N,M)表示,N个人报数,每报到M时杀掉那个人,最终胜利者的编号
- f(N−1,M)f(N-1,M)f(N−1,M)表示,N-1个人报数,每报到M时杀掉那个人,最终胜利者的编号
1 | class Solution { |
63、股票的最大利润 https://leetcode-cn.com/problems/gu-piao-de-zui-da-li-run-lcof/
经典dp问题
1 | class Solution { |
64、求1+2+…+n https://leetcode-cn.com/problems/qiu-12n-lcof/
要求不能用乘除法,for,while,if,else ,switch,case 等关键词及条件判断语句
递归
1 | class Solution { |