第一题

LeetCode 877 Medium [ https://leetcode.com/problems/stone-game ]

  • 描述:

    Alice 和 Bob 用几堆石子在做游戏。一共有偶数堆石子,排成一行;每堆都有 整数颗石子,数目为 piles[i] 。

    游戏以谁手中的石子最多来决出胜负。石子的 总数奇数 ,所以没有平局。

    Alice 和 Bob 轮流进行,Alice 先开始 。 每回合,玩家从行的 开始结束 处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中 石子最多 的玩家 获胜

    假设 Alice 和 Bob 都发挥出最佳水平,当 Alice 赢得比赛时返回 true ,当 Bob 赢得比赛时返回 false 。

跳跃游戏

  • 描述:给定数组arr,arr[i]=k代表可以从位置i向右跳1 ~ k个距离。比如,arr[2]=3,代表从位置2可以跳到位置3、位置4或位置5。如果从位置0出发,返回最少跳几次能跳到arr最后的位置上。如果arr长度为N,要求实现时间复杂度为O(N)、额外空间复杂度为O(1)的解法。

窗口点击模拟

  • 描述:

本题需要让你模拟一下在Windows系统里窗囗和鼠标点击的操作,具体如下:

  1. 屏幕分辨率为3840 * 2160,左上角坐标为(0,0),右下角坐标为(3839,2159)
  2. 窗口是一个矩形的形状,由左上角坐标(X,Y),和宽高(W,H),四个数字来定位。左上角坐标为(X,Y)、右下角坐标为(X+W,Y+H),其中左上角坐标一定会在屏幕范围内,其他一些部分可能会超过屏幕范围。
  3. 窗囗的点击和遮挡规则同Windows,但是不考虑关闭窗囗、最大化、最小化和强制置顶的情况。即
    3.1 如果发生重叠的话,后面打开的窗口会显示在前面打开的窗口上面
    3.2 当鼠标发生一次点击的时候,需要判断点击到了哪个窗口,如果同个坐标有多个窗口,算点击到最上层的那个
    3.3 当一个窗囗被点击的时候,会浮动到最上层

石子合并

先看一道比luogu p1880简单的题目。

  • 描述:

有n堆石子排成一排,每堆石子有一定的数量,将n堆石子合并成一堆。合并的规则是每次只能合并相邻的两堆石子,合并的花费为这两堆石子的总数。石子经过n-1次合并后成为一堆,求总的最小花费和最大花费。

1 ~ n 中每位数字乘积最大的值

  • 描述:

99°是一位爱好爬山的小青年,他每次在爬山过程中都会遇到很多小猴子,小猴子们喜欢向他提这样一种问题:在1 ~ n中找一个数字m,使得m的各个数位乘积最大。99°不擅长回答这种问题,你能帮他写一个程序得到结果吗?