题目一(业务)

3.2 2分
image.png

  • 这题copy的是leetcode的洗衣机问题 大概意思是有N件衣服,有M个洗衣机,要求每个洗衣机里面的衣服相等(也就是每个洗衣机里面都有平均值的衣服) 然后每轮每个洗衣机(不为0)可以往左或者往右面的洗衣机放一件衣服,要求至少需要多少轮搞定

    思路

  • 首先讨论第i个位置上,左面和右面洗衣机的情况 负数代表需要衣服 正数代表衣服多需要往外拿 假设左面和右面分别是a b

  1. 左负右负 i至少需要拿 abs(a)+abs(b)
  2. 左负右正 和 左正右负 和 左正右正 为 math.max(abs(a),abs(b))
  • 通过遍历得到每个位置上的值 然后最大值就是答案 (贪心,最大满足了,小的也就满足了)

    实现

  • 可以通过变量来保存遍历时左面累计的衣服值(预处理 用变量)

    矩阵

    套路

  • 矩阵的问题一般可以分解做,比如按圈打印矩阵 或者 斜线打印矩阵 一般确定两个点就可以打印 把打印和变量的变化拆开

    题目二

    image.png
    image.png

  • 每次确定两个点 然后定义一bool变量表示从上到下还是从下到上

  • A点 0 B点0 然后B点往下走 变成4 A点往右走变成1 直到遇到边界 A B换方向走
  • 结束条件为 三种情况 一种是B 大于 A , 一种是A 和 B在一列, 或者在一行。

题目三

image.png

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

    题目四

    3.2 33分
    image.png

  • 首先把换位置的分成三个组 如下图所示正方形 三角形 圆形。每个组里面有四个元素会换位置 第i组的第1 2 3 4 个元素如下图每次交换四个元素即可

image.png

题目五

2.3 1时1分
image.png

  • 这个题目之前做过 只需要 N+M时间复杂度,找对点 右上角 开始找就行

image.png

延伸题目

  • 可以全为1 全为0 如果有0 有1 左面全为0 右面全为1 请返回1最多的行数。

image.png

第六题

image.png

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

image.png
image.png

第七题 (优先队列)