leetcode刷题记录-day15

leetcode刷题记录-day15

  • 378
  • 380
  • 382
  • 384
  • 386
  • 390
  • 395
  • 397

378

leetcode刷题记录-day15_第1张图片
1.之前有类似的题目可以参考,其实这道题就典型的二分查找,关键函数如下:

    bool check(vector<vector<int>>& matrix, int mid, int k, int n) {
        int i = n - 1;
        int j = 0;
        int num = 0;
        while (i >= 0 && j < n) {
            if (matrix[i][j] <= mid) {
                num += i + 1;
                j++;
            } else {
                i--;
            }
        }
        return num >= k;
    }

380

leetcode刷题记录-day15_第2张图片
1.这道题也算是老朋友了,很显然,hash+list就能完成这件事情。首先,hash的话无序存放和查找,直接满足前两个要求,而最后的随机抽查,就靠list。
2.哈希的first存放的是数值,second存放的是指针指向这个链表对象。插入时,list直接在末尾追加即可,不需要排序之类的。删除的话借助这个second指针删除起来也很爽。
3.还是建议搞个fake_head and fake_tail

382

leetcode刷题记录-day15_第3张图片
1.挺有趣的一道题目,概率相等。其实说白了,这道题就是我前段时间写过的在system design里说到过的,这里就不说了。

384

leetcode刷题记录-day15_第4张图片
1.就是这种越简单的题目越有趣。
2. Fisher-Yates 洗牌算法。我收回我说的话,这道题暂时先不看。

386

leetcode刷题记录-day15_第5张图片
1.dfs,这还有啥好说的,pass!

390

leetcode刷题记录-day15_第6张图片
1.很典型的dp对吧,计算f(n)的时候,先自己模拟刷一趟,(当然没必要真实模拟,这个东西完全可以直接计算出来,index=0的时候对应的值是多少,index=1的时候对应的值是多少,诸如此类。)

395

leetcode刷题记录-day15_第7张图片
1.这道题很明显是递归了,遍历一遍后,找到不合格的家伙,统计它的下标,然后直接将原数组一分为二,继续搞下去。
2.对,没必要一次赶尽杀绝,只要有一个就好。

397

你可能感兴趣的:(算法与数据结构,leetcode)