一点资讯题目

1.活动选择
力扣:435. 无重叠区间

public static int countMaxActivity (ArrayList<ArrayList<String>> timeSchedule) {
        // 时间的比较,可以使用字符串的compareTo算法。
        Collections.sort(timeSchedule,new Comparator<ArrayList<String>>() {
            @Override
            public int compare(ArrayList<String> o1, ArrayList<String> o2) {
                    return o1.get(1).compareTo(o2.get(1));
            }
        });
        String end = timeSchedule.get(0).get(1);
        int count = 1;
        for(int i = 1;i<timeSchedule.size();i++){
            ArrayList<String> temp = timeSchedule.get(i);
            String start = temp.get(0);
            if(start.compareTo(end) >= 0){
                end = temp.get(1);
                count++;
            }

        }

        return count;
    }

2.最小路径和
力扣:64. 最小路径和

 public int findMin (int[][] mapArray) {
        // 动态规划dp
        int m = mapArray.length;
        int n = mapArray[0].length;
        int[][] dp = new int[m][n];
        dp[0][0] = mapArray[0][0];
        for(int i = 1;i<m;i++){
            dp[i][0] = dp[i-1][0] + mapArray[i][0];
        }
        for(int j = 1;j<n;j++){
            dp[0][j] = dp[0][j-1] + mapArray[0][j];
        }
        for(int i = 1;i<m;i++){
            for(int j = 1;j<n;j++){
                dp[i][j] = Math.min(dp[i-1][j],dp[i][j-1]) + mapArray[i][j];
            }
        }
        return dp[m-1][n-1];
    }

3.版本号
和蔚来考的一样。力扣:165. 比较版本号

 public int[] max_version (String[][] version_list) {
        // 版本号:就是转成数字,逐位比较
        int m = version_list.length;
        int[] result = new int[m];
        for(int i = 0;i<m;i++){
            result[i] = compare(version_list[i][0],version_list[i][1]);
        }
        return result;
    }

    public int compare(String v1,String v2){
        String[] v1s = v1.split("\\.");
        String[] v2s = v2.split("\\.");
        int m = Math.max(v1s.length,v2s.length);
        int n1 = 0;
        int n2 = 0;
        for(int i = 0;i<m;i++){
            if(i >= v1s.length){
                n1 = 0;
            }else {
                n1 = Integer.parseInt(v1s[i]);
            }
            if(i >= v2s.length){
                n2 = 0;
            }else {
                n2 = Integer.parseInt(v2s[i]);
            }
            if(n1 > n2){
                return 1;
            }else if(n1 < n2){
                return 2;
            }else {
                continue;
            }
        }
        return 1;
    }
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务