leetcode刷题记录-day15

这篇博客记录了作者在LeetCode刷题的第15天,涉及题目包括378、380、382、384、386、390和395。378题使用了二分查找,380题利用哈希和链表实现特定功能,382题为概率相等的问题,384题应用了Fisher-Yates洗牌算法,386题通过深度优先搜索解决,390题采用动态规划,395题则使用递归策略。

leetcode刷题记录-day15

378

在这里插入图片描述
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

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

382

在这里插入图片描述
1.挺有趣的一道题目,概率相等。其实说白了,这道题就是我前段时间写过的在system design里说到过的,这里就不说了。

384

在这里插入图片描述
1.就是这种越简单的题目越有趣。
2. Fisher-Yates 洗牌算法。我收回我说的话,这道题暂时先不看。

386

在这里插入图片描述
1.dfs,这还有啥好说的,pass!

390

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

395

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

397

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值