贪心算法

主要难点是

确定这道题能否使用贪心算法来解决。

 

简单贪心算法

 

 

最大的饼干,给最贪心的小朋友。

那么对于倒数第二贪心的小朋友,剩下的也是目前最大的饼干。

可以一直下去。

 

如果最大的饼干,都没法满足最贪心的小朋友,那么对不起,所有的饼干都满足不了。只能放弃他。

只能让最大的去试一下第二大的小朋友

 

 

贪心算法一个特点,最,都是找最大值,最小值。

 

 

我的代码

//先排序
        //g是孩子 s是饼干
        Arrays.sort(g);
        Arrays.sort(s);

        int child = g.length-1;
        int cookies = s.length-1;

        int count = 0;

        while(cookies>=0&&child>=0){

            //满足
            if(s[cookies]>=g[child]){
                cookies--;
                child--;
                count++;
            }else{

                //不满足,孩子向前移
                child--;

            }



        }


        return count;

注意Java提供的排序使用方法,并且这个是从小到大的排序

 

太简单以至于不知道哪里用了贪心算法

我的想法是双指针遍历就好了

 ?????

真的就是双指针就好了,真个还是中等题。。题目超级长,怎么这么简单?

 public boolean isSubsequence(String s, String t) {
        
        int indexS = 0;
        int indexT = 0;

        int sLen = s.length();
        int tLen = t.length();

        while(indexS<sLen&&indexT<tLen){

            if(s.charAt(indexS)==t.charAt(indexT)){
                indexS++;
                indexT++;
            }else{
                indexT++;
            }

        }

        if(indexS==sLen)
            return true;
        else
            return false;
        
    }

 

posted @ 2018-06-29 23:08  朋友圈  阅读(185)  评论(0编辑  收藏  举报