面朝大海157 level
获赞
166
粉丝
9
关注
0
看过 TA
4
中国石油大学(北京)
2019
Java
IP属地:未知
暂未填写个人简介
私信
关注
2018-09-11 15:00
已编辑
中国石油大学(北京) Java
好多都是 Leetcode 原题, 或者改编的。 1. 最大不重复子串 思路: 用一个 map used_char 保存所有字符出现的最后一次位置。 max_length 记录最大不重复子串的长度 begin 记录每一个不重复子串的起始位置 对字符串的字符进行一次遍历 如果这个字符之前出现过,并且当前不重复子串的起始位置小于等于其位置: 更新 begin 否则 更新 max_length def get_max_substring(s): begin = 0...
freeshi:还有螺柱说的求孤岛的,我刚开始用了DFS,没加DP,过了80,提示的错误也是数组越界,然后我猜可能是栈溢出,在本地输入了一个1000X1000全是1的数组,结果溢出了,然而时间所剩无几,没有将DFS改为循环,完了写了循环的方式,可以解决1000X1000全是1的情况,但是不知道能不能真的AC,也有人说是第二个的此时用例还是初始化有问题,那可能是吧,下边是我循环的代码 import java.util.ArrayDeque; import java.util.Scanner; /* 4 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 */ public class Main {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         String line = in.nextLine();         int N = Integer.parseInt(line);         String[] split = null;         boolean stand[][] = new boolean[N][N];         boolean flag[][] = new boolean[N][N];         for (int i = 0; i < N; i++) {             line = in.nextLine();             split = line.split(" ");             for (int j = 0; j < N; j++) {                 if (split[j].equals("1"))                     stand[i][j] = true;             }         }         System.out.println(findTeam(N, stand));     }     public static int findTeam(int N, boolean stand[][]) {         boolean flag[][] = new boolean[N][N];         ArrayDeque<Integer[]> deque = new ArrayDeque<>();         int ret = 0;         for (int i = 0; i < N; i++) {             for (int j = 0; j < N; j++) {                 if (stand[i][j] && !flag[i][j]) {                     deque.offer(new Integer[] { i, j });                     flag[i][j] = true;                     while (!deque.isEmpty()) {                         Integer[] site = deque.poll();                         int m = site[0];                         int n = site[1];                         if (m > 0 && stand[m - 1][n] && !flag[m - 1][n]) {                             deque.offer(new Integer[] { m - 1, n });                             flag[m - 1][n] = true;                         }                         if (n > 0 && stand[m][n - 1] && !flag[m][n - 1]) {                             deque.offer(new Integer[] { m, n - 1 });                             flag[m][n - 1] = true;                         }                         if (n < N - 1 && stand[m][n + 1] && !flag[m][n + 1]) {                             deque.offer(new Integer[] { m, n + 1 });                             flag[m][n + 1] = true;                         }                         if (m < N - 1 && stand[m + 1][n] && !flag[m + 1][n]) {                             deque.offer(new Integer[] { m + 1, n });                             flag[m + 1][n] = true;                         }                     }                     ret++;                 }             }         }         return ret;     } }
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务