题目一(业务)
3.2 2分
这题copy的是leetcode的洗衣机问题 大概意思是有N件衣服,有M个洗衣机,要求每个洗衣机里面的衣服相等(也就是每个洗衣机里面都有平均值的衣服) 然后每轮每个洗衣机(不为0)可以往左或者往右面的洗衣机放一件衣服,要求至少需要多少轮搞定
思路
首先讨论第i个位置上,左面和右面洗衣机的情况 负数代表需要衣服 正数代表衣服多需要往外拿 假设左面和右面分别是a b
- 左负右负 i至少需要拿 abs(a)+abs(b)
- 左负右正 和 左正右负 和 左正右正 为 math.max(abs(a),abs(b))
通过遍历得到每个位置上的值 然后最大值就是答案 (贪心,最大满足了,小的也就满足了)
实现
-
矩阵
套路
矩阵的问题一般可以分解做,比如按圈打印矩阵 或者 斜线打印矩阵 一般确定两个点就可以打印 把打印和变量的变化拆开
题目二


每次确定两个点 然后定义一bool变量表示从上到下还是从下到上
- A点 0 B点0 然后B点往下走 变成4 A点往右走变成1 直到遇到边界 A B换方向走
- 结束条件为 三种情况 一种是B 大于 A , 一种是A 和 B在一列, 或者在一行。
题目三

- 定义左上角 和 右下角两个端点 每次打印两个端点的矩阵 比如 0 和 11 然后A点往右下角移动,B点往左上角移动,终止条件为B>A
考虑三种特殊情况 在同一行 或者同一列 拿打印方式用分支来判断
题目四
3.2 33分

首先把换位置的分成三个组 如下图所示正方形 三角形 圆形。每个组里面有四个元素会换位置 第i组的第1 2 3 4 个元素如下图每次交换四个元素即可
题目五
2.3 1时1分
- 这个题目之前做过 只需要 N+M时间复杂度,找对点 右上角 开始找就行
延伸题目
- 可以全为1 全为0 如果有0 有1 左面全为0 右面全为1 请返回1最多的行数。
第六题

- 我们可以在纸上推导一下三步操作以后的情况,发现如果要求n是质数时,则最小步数为 n-1次操作2,这可以证明只能是操作2才可以凑出质数

