春招学习第一天。(1/30)

圣诞节仍在学习,真是扎心了啊老铁们。

分饼干(排序贪心)

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

示例 1:
输入: g = [1,2,3], s = [1,1]
输出: 1
解释:
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。

思路:每个要把饼干尽可能多的分配给更多的小朋友,就应该给最小的小朋友刚刚好的分量,如果没有,就分配多一点的分量。只有这样才能让更多的小朋友被分到饼干,意即贪心思想。先排序,再分饼干。
AC代码如下

class LeetCode455 {
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int j=0;
        for (int i = 0; i <g.length ; i++,j++) {
            //找到最适合分给小朋友的那块饼干
            while (j<s.length&&s[j]<g[i]){
                j++;
            }
            if (j>=s.length){
                //没有饼干可以再分给这个小朋友了。返回。
                return i;
            }
        }
        //所有小朋友都分到了饼干。
        return g.length;
    }
}

切蛋糕(回溯)

切分酥饼的时候,要求切分后每一块上面的草莓个数都不相同。假设切分出来的 NN 块酥饼上要各有 “ 1~N 个(共 N(N+1)÷2 个草莓)”。

但这里要追加一个条件,那就是 “一定要使相邻的两块酥饼上的数字之和是平方数”。

举个例子,假设 N=4 时采用如图 11 的切法。这时,虽然 1+3=4 得到的是平方数,但 “1 和 4” “2 和 3” “2 和 4” 的部分都不满足条件(图 1)。
示例图

图 1 不满足条件的切法示例
编写cutCake函数。如果有答案返回答案数组,没有则返回空。
AC代码如下

class CutCake{
    public int[] cutCake(int n){
        int[] res = new int[n];
        int[] originalNum = new int[n];
        for (int i = 0; i <n ; i++) {
            originalNum[i]=i+1;
        }
        //System.out.println(Arrays.toString(originalNum));
        res[0]=1;
        boolean[] isUsed = new boolean[n];
        Arrays.fill(isUsed,false);
        isUsed[0]=true;
        if(cutCakeBfs(originalNum,1,res,isUsed)){
            System.out.println("There is an answer");
            return res;
        }
        return new int[0];

    }
    public boolean cutCakeBfs(int[] originalNum,int i,int[] res,boolean[] isUsed){
            for (int j = 1; j <originalNum.length ; j++) {
                if (!isUsed[j]){
                    if (isSqrtNumber(originalNum[j]+res[i-1])){
                        //保存现场
                        int temp=res[i];
                        res[i]=originalNum[j];
                        isUsed[j]=true;
                        if (i==res.length-1){
                            if (isSqrtNumber(res[res.length-1]+res[0])){
                                return true;
                            }
                        }
                        if(cutCakeBfs(originalNum,i+1,res,isUsed)){
                            return true;
                        }
                        //还原
                        res[i]=temp;
                        isUsed[j]=false;
                    }
                }
            }

        return false;
    }
    public boolean isSqrtNumber(int number){
        //有待优化。只需要初始化一次列表即可。
        HashSet<Integer> sqrts = new HashSet<>();
        for (int i = 2; i <=8 ; i++) {
            sqrts.add(i*i);
        }
        return sqrts.contains(number);
    }

}
全部评论

相关推荐

头像
05-14 12:29
安卓
点赞 评论 收藏
转发
感觉这一周太梦幻了,就像一个梦,很不真实~~~感觉这个暑期,我的运气占了99成,实力只有百分之一4.15上午&nbsp;腾讯csig&nbsp;腾讯云部门,面完秒进入复试状态4.16下午&nbsp;美团优选供应链部门,4.18上午发二面4.17晚上&nbsp;阿里国际一面,纯拷打,面完我都玉玉了4.18下午&nbsp;阿里国际二面,是我们leader面的我,很轻松~~4.18晚上&nbsp;约了hr面4.19上午&nbsp;hr面,下午两点口头oc4.19晚上&nbsp;意向书说起来我的暑期好像一次都没挂过~~~~~难道我是天生面试圣体?----------------------------------------------------------------------六个月前,我还是0项目0刷题,当时想的是先把论文发出来再去找实习。结果一次组会,老师打破了我的幻想(不让投B会,只让投刊或者A)我拿头投啊!!!然后就开始物色着找实习,顺便做完了mit的6.s081,但是基本上还是没刷过题目-----------------------------------------------------------------------11月&nbsp;&nbsp;一次偶然的机会,面进了某个耳机厂的手环部门,大概是做嵌入式的,用的是CPP。12月&nbsp;莫名其妙拿到了国创的面试机会,0基础四天速成java基础!居然也给我面过了hhhhh,可能是面试没写题吧入职国创后的几个月,一直没活,天天搁那看剧,都快忘了还有暑期实习这回事了~~~~命运的齿轮在2.26开始转动,因为这一天美团开了,我开始慌了,因为那时的我什么都不会。lc,八股,sql全部是0进度。然后就开始了女娲补天,上班刷题,下班继续做之前的开源,顺便学一学八股。3月到现在,lc也刷到快200了,一天最多提交了47次~~~~~~~~~~八股根据别人的面经总结和博客,写了快十万字的笔记~~~~~~~~~~简历上的实习经历和开源,也努力去深挖了,写了几万字的记录~~~~~~所以面试的时候,基本上都能cover了,面试官问到的基础基本都会,不基础的我就把他往我会的地方引。结果好像还不错,基本上每个面试官评价都挺好的emmmmmmmm
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1151063次浏览 17148人参与
# 通信和硬件还有转码的必要吗 #
11188次浏览 101人参与
# 不去互联网可以去金融科技 #
20322次浏览 255人参与
# 和牛牛一起刷题打卡 #
18863次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203340次浏览 3625人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4967次浏览 30人参与
# OPPO开奖 #
19192次浏览 267人参与
# 通信硬件薪资爆料 #
265873次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2213次浏览 34人参与
# 互联网公司评价 #
97664次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25034次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454801次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53895次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14633次浏览 349人参与
# 硬件人的简历怎么写 #
82284次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19392次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28040次浏览 248人参与
# 学历对求职的影响 #
161222次浏览 1804人参与
# 你收到了团子的OC了吗 #
538658次浏览 6386人参与
# 你已经投递多少份简历了 #
344162次浏览 4963人参与
# 实习生应该准时下班吗 #
96958次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63516次浏览 622人参与
牛客网
牛客企业服务