面朝大海157 level
获赞
173
粉丝
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 max_length = 0 used_char = {} for i in ra...
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;     } }
投递字节跳动等公司9个岗位 >
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务