m0_54831887 2021-10-29 22:33 采纳率: 84.6%
浏览 131
已结题

简单的Java题,希望写一下代码哈

凑字数66666666666666666666666666666666666666666

img

  • 写回答

1条回答 默认 最新

  • 七号公园的忧伤 Java领域新星创作者 2021-10-30 03:52
    关注
    
    
    public class Main {
    
        public boolean test(int[][] arr, int line, int column){
            //记录遍历到每个位置的时候,最大的相同数
            int[][] temp = new int[line][column];
            temp[0][0] = 1;//最小是1
            //2层循环,遍历整个二维数组
            for (int i=0;i<line;++i){
                for (int j=0;j<column;++j){
                    //topV  leftV  当前位置的上边和下边最大数量
                    int topV = i > 0 ? temp[i-1][j] : 0;
                    int leftV = j > 0 ? temp[i][j-1] : 0;
                    //当前位置上边和左边的数组的值
                    int top = i > 0 ? arr[i-1][j] : -1;
                    int left = j > 0 ? arr[i][j-1] : -1;
                    //如果当前位置和上左都一样,那么取最大的
                    if(arr[i][j] == top && arr[i][j] == left){
                        temp[i][j] = Math.max(topV, leftV) +1;
                    }else if(arr[i][j] == top){
                        temp[i][j] = topV+1;
                    }else if (arr[i][j] == left){
                        temp[i][j] = leftV +1;
                    }else {
                        temp[i][j] = 1;
                    }
                    //如果已经右3个一样了,就不循环了,直接返回true
                    if(temp[i][j] == 3){
                        return true;
                    }
                }
            }
            return false;
        }
    
        public static void main(String[] args) {
            int[][] a = new int[][]{{4,4,1,4},{2,2,1,2},{2,2,1,2},{3,1,3,1}};
            System.out.println(new Main().test(a, 4,4));
        }
    }
    

    最坏情况需要遍历1次数组,时间复杂度是O(MN), 空间复杂度也是MN
    说明:用一维数组来做解释
    比如数组: 1 2 2 3 3 3
    遍历数组,下标为0,最大重复数为1,
    下标1,2 !=1 ,最大重复数也是1
    到下标2的时候, 2 等于前一个2,那么用前一个的最大重复数1,加上1 就是2。
    因此,循环之后,得到一个新数组 1 1 2 1 2 3

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月31日
  • 已采纳回答 10月30日
  • 创建了问题 10月29日

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用