网易有道1012笔试

  1. 符合条件的vue模版
  2. 公共子序列最大长度
  3. 选择 出租房子还是存货的最大收益
  4. 洪水逃离最短时间

import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息

public class Main {
  public static boolean AllEmp(StringBuilder
							   s) {   //检查模版括号内是否全为空
	  String a = s.toString();
	  for (char ch : a.toCharArray()) {
		  if (ch != ' ')return false;
	  }
	  return true;
  }

  public static void main(String[] args) {

	  Scanner in = new Scanner(System.in);

	  Deque<String>st = new ArrayDeque();

	  String input = in.nextLine();

	  input = "/" + input + "/";                   //防止溢出

	  char[]a = input.toCharArray();

	  StringBuilder sb = new StringBuilder();

	  boolean beg = false;  //是否目前是包含在{{}}内的字符串

	  int id = 1;

	  while (id < a.length) {

		  if (a[id] == '}') {    //右括号
			  if (a[id + 1] == '}' && a[id - 1] != '}' && a[id + 2] != '}') {
				  if (st.isEmpty() || !st.peek().equals("{{") || st.size() != 1) {
					  System.out.print("false");
					  return;
				  } else {
					  st.pop();
				  }
				  if (AllEmp(sb)) {   //检查是否全为空
					  System.out.print("false");
					  return;
				  }
				  sb = new StringBuilder();
				  beg = false;
				  id++;
			  } else {
				  System.out.print("false");
				  return;
			  }
		  }

		  else if (a[id] == '{') {  //左括号
			  if (a[id + 1] == '{' && a[id - 1] != '{' && a[id + 2] != '{') {
				  beg = true;
				  st.push("{{");
				  id++;
			  } else {
				  System.out.print("false");
				  return;
			  }
		  }

		  else {            //普通字
			  if (beg)sb.append(a[id]);
		  }
		  id++;
	  }

	  if (st.isEmpty())System.out.print("true");
	  else System.out.print("false");

	  return;

  }
}
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
	public static void main(String[] args) {
	Scanner in = new Scanner(System.in);
		String t1 = in.nextLine();
		String t2 = in.nextLine();

		char[]c1 = t1.toCharArray();
		char[]c2 = t2.toCharArray();

		int m = c1.length, n = c2.length;

		int[][]f = new int[m + 1][n + 1]; //t1前m与t2前n

		for (int i = 0; i < m; i++)Arrays.fill(f[i], 0);

		for (int i = 1; i <= m; i++) {
			for (int j = 1; j <= n; j++) {
				f[i][j] = Math.max(f[i - 1][j], f[i][j - 1]);
				if (c1[i - 1] == c2[j - 1]) f[i][j] = Math.max(f[i - 1][j - 1] + 1, f[i][j]);
			}
		}

		System.out.print(f[m][n]);

	}
}

import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息

public class Main {
   public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int m = in.nextInt();
    int k = in.nextInt();
    int n = in.nextInt();

    int[]a = new int[n];
    for (int i = 0; i < n; i++)a[i] = in.nextInt();

    long[]f = new long[n];

    for (int i = 0; i < n; i++) {

        if (i > 0)f[i] = f[i - 1] + m;
        else f[i] = m;

        for (int j = 0; j < i; j++) {
            if (j > 0) {
                //[j,i]采用出租
                f[i] = Math.max(f[i], f[j - 1] + m * (i - j + 1));
			  //[j,i]采用存货
                f[i] = Math.max(f[i], f[j - 1] + a[i] - a[j] - 2 * k);
            } else {
                //[0,i]采用出租
                f[i] = Math.max(f[i], m * (i + 1));
			  //[0,i]采用存货
                f[i] = Math.max(f[i], a[i] - a[0] - 2 * k);
            }

        }
    }

    System.out.print(f[n - 1]);

	}
}


import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
	  public static boolean c(int a, int[][]g) {
		  //最大值为a时能否通过
		  int n = g.length;
		  Queue<Integer>q = new ArrayDeque();
		  boolean[][]vis = new boolean[n][n];
		  if (g[0][0] <= a){
			q.offer(0);
			vis[0][0] = true;
		  }

		  int[]d = new int[] {-1, 0, 1, 0, -1};

		  while (!q.isEmpty()) {
			  int i = q.poll();
			  int x = i / n, y = i % n;
			  if (x == n - 1 && y == n - 1)return true;
			  for (int k = 0; k < 4; k++) {
				  int nx = x + d[k], ny = y + d[k + 1];
				  if (nx >= 0 && nx < n && ny >= 0 && ny < n && !vis[nx][ny] && g[nx][ny] <= a) {
					  q.offer(n * nx + ny);
					  vis[nx][ny] = true;
				  }
			  }
		  }
		  return false;
	}


	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();

		int[][]g = new int[n][n];

		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)g[i][j] = in.nextInt();


		//从0,0-n-1,n-1路过最大值的最小值

		int l = -1, r = n * n;
		while (l + 1 < r) {
			int mid = (l + r) >> 1;
			if (c(mid, g))r = mid;
			else l = mid;
		}
		System.out.print(r);

	}
}

#网易求职进展汇总##笔试#
全部评论
第三题用卖股票的做法过了30%,感觉思路也没啥问题啊
点赞 回复 分享
发布于 今天 19:22 北京
我靠,我第三题直接用买卖股票只过了60%,不会是要用long数组吧,他喵的
点赞 回复 分享
发布于 今天 14:44 江西
100 100 10 12.5有机会进面吗
点赞 回复 分享
发布于 今天 12:34 江苏
无敌了
点赞 回复 分享
发布于 今天 12:20 江苏
点赞 回复 分享
发布于 今天 12:19 上海

相关推荐

昨天 15:57
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务