科大讯飞08.18【编程】

【记录一下】
第一题:打印倒金字塔
第二题:栈操作进行数字合并。
第三题:区间拓展,一个长度为n的数组,从x位置出发,初始区间是[x,x],可以向左或向右拓展,得分即区间内元素的和,但是要求只有在要拓展的元素比当前得分大的时候才可以拓展。出来之后看大家的提示才知道是dfs。
```java
public class Solution {
    public int[] findMax(int[] arr){
        int[] res = new int[arr.length];
        for(int i = 0; i < arr.length; i++){
            res[i] = dfs(arr, i, 0);
        }
        return res;
    }

    public int dfs(int[] arr, int s, int sum){
        // arr从s位置开始扩展能获得的最大得分
        if(s < 0 || s >= arr.length)    return sum;
        sum += arr[s];
        int left = sum, right = sum;
        if(s > 0 &amp;&amp; arr[s - 1] > sum){
            left = dfs(arr, s - 1, sum);
        }
        if(s < arr.length - 1 &amp;&amp; arr[s + 1] > sum){
            right = dfs(arr, s + 1, sum);
        }
        return Math.max(left, right);
    }
}
```
全部评论

相关推荐

小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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