牛客网真题-76-种花-美团MT47

种花

http://www.nowcoder.com/questionTerminal/09066b2c010f4218adb1a1db42dbb236

贪心+暴力模拟,100%
由第一种方法可以产生一种递归方法,以最小点分割数组,递归两个子数组,递归只能过65%。
如下代码:注释中为贪心+模拟,
最佳思路:递增数组(评论区大佬)

package org.niuke.solution78;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    static int cnt = 0;

    public static void help(int[] arr, int minPre){
        if(arr.length <= 0){return;}
        if(arr.length == 1){
            cnt += arr[0]-minPre;
            return;
        }
        int min = Integer.MAX_VALUE, minIndex = 0;
        for(int i = 0; i < arr.length; i++){
            if(arr[i] < min){
                min = arr[i];
                minIndex = i;
            }
        }
        cnt += min - minPre;
        if(minIndex>0)help(Arrays.copyOfRange(arr, 0, minIndex), min);
        if(minIndex<arr.length-1)help(Arrays.copyOfRange(arr, minIndex + 1, arr.length), min);
    }

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] ints = new int[n];
        for(int i = 0; i < n; i++){
            ints[i] = scanner.nextInt();
        }
        //注释部分为暴力模拟
        //        int index = 0, cnt = 0;
        //        while (index < ints.length) {
        ////            System.out.println(Arrays.toString(ints));
        //            while (index < n && ints[index] == 0) {
        //                index++;
        //            }
        //            for(int i = index; i < n; i++){
        //                if(ints[i] == 0){
        //                    break;
        //                }else{
        //                    ints[i]--;
        //                }
        //            }
        //            if(index < n){
        //                cnt++;
        //            }
        //        }
        //        System.out.println(cnt);
        help(ints, 0);
        System.out.println(cnt);
    }
}
全部评论

相关推荐

买蜜雪也用卷:我觉得应该没有哪个人敢说自己熟练使用git,代码分支一复杂还是得慢慢寻思一下的,不过基本的拉代码提交代码还有分支什么的是应该会
点赞 评论 收藏
分享
05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务