01-16 Sunday

01-15 Saturday Easy


费了好大劲才把这个简单题做出来;
关键在于等差数列的求和公式;

  1. class Solution {
  2. public int totalMoney(int n) {
  3. int ans = 0;
  4. final int mod = (n) / 7;
  5. final int y = n % 7;
  6. ans += (56 + 7 * (mod - 1)) * mod / 2;
  7. if (y > 0) {
  8. final int s = mod + 1;
  9. ans += (s * 2 + (y - 1)) * y / 2;
  10. }
  11. return ans;
  12. }
  13. }

01-14 Friday

https://leetcode-cn.com/problems/find-k-pairs-with-smallest-sums/

查找和最小的 K 对数字

不会做,直接 cv,太累了~

01-13 Thursday

至少是其他数字两倍的最大数

这题目比较简单,求最大值和次大值就行了。

01-10 Monday Medium

https://leetcode-cn.com/problems/additive-number/

累加数,回溯;
如果是数组就简单了,可惜是字符串;
需要穷举前两个数字的所有可能性;
还有一个难点就是实现字符串数字的加法,防止数字的溢出问题。

01-11 Tuesday Hard

https://leetcode-cn.com/problems/escape-a-large-maze/solution/tao-chi-da-mi-gong-by-leetcode-solution-qxhz/

逃离大迷宫;
关键点在于判断 封锁的坐标是否隔离了起始点。

我人直接麻了。。

01-12 Wednesday Medium

递增的三元子序列;

贪心算法

今天的题目如果理解了不是特别的难;

先设定一个 序列起点值 first
预设 序列的中间值 mid

从第 2 个数字开始遍历,num
如果 num 比 mid 大,则满足条件的序列出现了,返回 true
如果 num 比 first 大,则 用 num 替换 mid,这样后续的数字更容易满足 > mid
如果 num 比 first 小,这里需要 思考下,💡 用 num 替换 first,如果后续 出现了 num’ > mid,则满足条件的序列出现了,只是不是这两个值,而是原来的 first - mid,加上 num;如果 后续出现了 新的 mid,相当于是 废弃了前面的序列,已经没用了。

  1. if (nums.length < 3) {
  2. return false;
  3. }
  4. int x = nums[0];
  5. int y = Integer.MAX_VALUE;
  6. for (int i = 1; i < nums.length; i++) {
  7. int num = nums[i];
  8. if (num > y) {
  9. return true;
  10. } else if (num > x) {
  11. y = num;
  12. } else {
  13. x = num;
  14. }
  15. }
  16. return false;