8.25微软笔试

test example过了,不确定有没有别的错。
1. 去掉一个5后得到的最大数字。我看题目说注重正确性,不在意性能,那是直接暴力法?
class Solution {
    public int solution(int N) {
        // write your code in Java 8 (Java SE 8)
        String str = String.valueOf(N);
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '5') {
                list.add(i);
            }
        }
        int res = Integer.MIN_VALUE;
        for (int idx : list) {
            StringBuilder s = new StringBuilder();
            for (int i = 0; i < str.length(); i++) {
                if (i != idx) {
                    s.append(str.charAt(i));
                }
            }
            res = Math.max(res, Integer.parseInt(s.toString()));
        }
        return res;

    }
}

2. 和为0的子数组个数。前缀和+哈希,类似:lc560
class Solution {
    public int solution(int[] A) {
        // write your code in Java 8 (Java SE 8)
        int cnt=0;
        int sum=0;
        HashMap<Integer,Integer> map=new HashMap<>();
        for(int num:A){
            sum+=num;
            if(sum==0){
                cnt++;
            }
            if(map.containsKey(sum)){
                cnt+=map.get(sum);
            }
            if(cnt>1e9){
                return -1;
            }
            map.put(sum,map.getOrDefault(sum,0)+1);
        }
        return cnt;
    }
}
3. 找等差数列,对于长度为n(n>=3)的数列,对子数组个数贡献为(n-1)*(n-2)/2
class Solution {
    public int solution(int[] A) {
        // write your code in Java 8 (Java SE 8)
        int len=A.length;
        if(len<=2){
            return 0;
        }
        int res=0;
        int d=A[1]-A[0];
        int cur=A[1];
        int n=2;
        for(int i=2;i<len;i++){
            if(A[i]-cur==d){
                cur=A[i];
                n++;
            }else{
                if(n>=3){
                    res=res+(n-1)*(n-2)/2;
                }
                d=A[i]-cur;
                cur=A[i];
                n=2;
            }
        }
        if(n>=3){
            res=res+(n-1)*(n-2)/2;
        }
        return res>1e9?-1:res;
    }
}




#微软##微软笔试#
全部评论
第一图我应该刷到过
点赞 回复 分享
发布于 2022-10-05 01:30 山西

相关推荐

强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
3
14
分享

创作者周榜

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