力扣之路续更


前言

接着上次的周赛第三题开始,再加上昨天的每日一题吧


一、Problem C 2064. 分配给商店的最多商品的最小值

这个题目是我最讨厌的BFS ps:因为我不太会.不过通过理解这道题我对BFS又有了一个新的见解?
通过队列存储每次操作后的值,用操作过的值与最后要的值比较如果相等就返回res操作次数.(一开始被队列的size会变给
坑了)太菜了太菜了

代码如下

class Solution {
    public int minimumOperations(int[] nums, int start, int goal) {
        Deque<Integer> queue = new LinkedList<>();
        Set<Integer> set = new HashSet<>();
        set.add(start);
        queue.offer(start);
        int res = 1;
        while (!queue.isEmpty()){
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                int x = queue.poll();
                for (int j = 0; j < nums.length; j++) {
                    int add = x + nums[j];
                    int remove = x - nums[j];
                    int xor = x ^ nums[j];
                    if (add == goal|| remove == goal || xor == goal) return res;
                    if (add>=0 && add<=1000 && set.add(add)) queue.offer(add);
                    if (remove>=0 && remove<=1000 && set.add(remove)) queue.offer(remove);
                    if (xor>=0 && xor<=1000 && set.add(xor)) queue.offer(xor);
                }
            }
            res++;
        }
        return -1;
    }
}

二、11.9每日一题2064. 分配给商店的最多商品的最小值

一开始没想到是一个二分.后来想到了就挺简单hh
代码如下:

class Solution {
    public int minimizedMaximum(int n, int[] quantities) {
        int mid,left = 1,right = 100000;
        while (left<right){
            mid = left+right>>1;
            int count = 0;
            for (int quantity : quantities) {
                if (quantity%mid==0){
                    count+=quantity/mid;
                }else {
                    count+=quantity/mid +1;
                }
            }
            if (count<=n){
                right = mid;
            }else {
                left = mid+1;
            }
        }
        return left;
    }
}

总结

还是太菜了好好学吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值