中信信用卡中信算法投票4-14

ac了3道,附加题dfs写错了ac0
/**
 * Created by lwf on 2021/4/14 16:08
 */
public class Main1 {
    public static void main(String[] args) {
        System.out.println(new Main1().primeSum(2, 5));
    }
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * primeSum函数返回素数和
     * @param n int整型 n为正整数,且n>1
     * @param m int整型 m为正整数,且m>n
     * @return int整型
     */
    public int primeSum (int n, int m) {
        // write code here
        int sum=0;
        for(int i=n;i<=m;i++){
            if(isSu(i)){
                sum+=i;
            }
        }
        return sum;
    }
    private boolean isSu(int a){
        if(a==2){
            return true;
        }
        for(int i=2;i<=Math.sqrt(a);i++){
            if(a%i==0){
                return false;
            }
        }
        return true;
    }
}
public class Main2 {
    public static void main(String[] args) {
        Main2 main2=new Main2();
        String[] days=new String[]{"111101110111011101110111011010", "111101110111011101110111011010", "111101110111010101010111011010", "111101110101011101110111111010", "111101110111011101110111011110", "111101010111011101110111010111", "101101110111011101110111011110", "010101110111011101110101011110"};
        System.out.println("main2.countDays(days) = " + main2.countDays(days));
    }
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 获取全体员工全员上班的天数
     * @param workDays string字符串一维数组 每个员工的上班日期,0代表休息1代表上班,数组大小大于0小于10000
     * @return int整型
     */
    public int countDays (String[] workDays) {
        // write code here
        int days=workDays[0].length();
        byte[] bytes=new byte[days];
        for(int i=0;i<days;i++){
            byte flag=1;
            for(String str:workDays){
                flag&=str.charAt(i);
            }
            bytes[i]=flag;
        }
        int sum=0;
        for(byte b:bytes){
            sum+=b;
        }
        return sum;
    }
}
import java.util.*;

/**
 * Created by lwf on 2021/4/14 16:29
 */
public class Main3 {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param strs string字符串一维数组
     * @return string字符串ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<String>> groupAnagrams (String[] strs) {
        // write code here
        ArrayList<ArrayList<String>> list=new ArrayList<>();
        HashMap<String,ArrayList<String>> map=new HashMap<>();
        for(int i=0;i<strs.length;i++){
            String hash=hash(strs[i]);
          if(!map.containsKey(hash)){
              ArrayList<String> list1=new ArrayList<>();
              list1.add(strs[i]);
              list.add(list1);
              map.put(hash,list1);
          }else {
              ArrayList<String> strings = map.get(hash);
              strings.add(strs[i]);
          }
        }
        return list;
    }

    /**
     * 字符串编程位图
     * @param str
     * @return */
    private String hash(String str){
        byte[] bytes=new byte[26];
        //小写
        //str.toLowerCase();
        for(char c:str.toCharArray()){
            bytes[c-'a']=1;
        }
        return new String(bytes);
    }
}
附加题写错了,代码也贴出来。
/**
 * Created by lwf on 2021/4/14 16:49
 * "{{-5,-1,-1},{-4,-2,0},{1,1,-1},{-3,0,-8}}"
 */
public class Main4 {
    public static void main(String[] args) {
        Main4 main4=new Main4();
        System.out.println(main4.calculateAdventureMinHp("{{-2,-1,0},{-1,0,-3},{-2,2,-1}}"));
    }
    public int calculateAdventureMinHp (String adventurePlayer) {
        // write code here
        String[] handler=adventurePlayer.substring(2,adventurePlayer.length()-2).split("},\\{");
        int x=handler.length;
        int y=len(handler[0]);
        int[][] res=new int[x][y];
        for(int i=0;i<handler.length;i++){
            String[] tmp=handler[i].split(",");
            for(int j=0;j<tmp.length;j++){
                res[i][j]=Integer.parseInt(tmp[j]);
            }
        }
        return dps(res,0,y-1);
    }
    private int len(String str){
        return str.split(",").length;
    }
    private int dps(int[][] arr,int x,int y){
        int min=0;
        System.out.println("arr[x][y] = " + arr[x][y]);
        if(x>=arr.length||y<0){
            return 0;
        }
        if(x==(arr.length-1)&&y==0){
            System.out.println("end");
            return arr[x][y];
        }
        if(y-1<0){
          min=dps(arr,x+1,y);
        }else if(x+1>=arr.length){
            min=dps(arr,x,y-1);
        }else {
          min=Math.max(dps(arr,x+1,y),dps(arr,x,y-1));
        }
        System.out.println("min = " + min);
        return arr[x][y]+min;
    }
}

7点20收到预约面试邮件了。



#笔试题目##中信银行#
全部评论

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务