今日头条笔试

This commit is contained in:
xiongraorao 2018-08-12 18:52:07 +08:00
parent bb67071d12
commit 05988b660b
6 changed files with 229 additions and 0 deletions

View File

@ -0,0 +1,11 @@
package com.raorao.interview.bytedance;
/**
* .
*
* @author Xiong Raorao
* @since 2018-08-12-10:15
*/
public class Test {
}

View File

@ -0,0 +1,123 @@
package com.raorao.interview.bytedance.q2;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/**
* .
*
* @author Xiong Raorao
* @since 2018-08-12-10:28
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = Integer.parseInt(scanner.nextLine());
List<Node> nodes = new ArrayList<>();
for (int i = 0; i < m; i++) {
String[] input = scanner.nextLine().split(";");
for (String s : input) {
String[] t = s.split(",");
int start = Integer.parseInt(t[0]);
int end = Integer.parseInt(t[1]);
nodes.add(new Node(start, end));
}
}
List<Node> ret = process(nodes);
while (process(ret).size() != ret.size()) {
ret = process(ret);
}
// 排序
ret.sort(Comparator.comparing(o -> o.start));
StringBuilder sb = new StringBuilder();
ret.forEach(e -> sb.append(e.start).append(",").append(e.end).append(";"));
System.out.println(sb.toString().substring(0, sb.toString().length() - 1));
}
private static List<Node> process(List<Node> nodes) {
List<Node> ret = new ArrayList<>();
ret.add(nodes.get(0));
int size = nodes.size();
if (size == 1) {
System.out.println(ret.get(0).start + "," + ret.get(0).end);
return ret;
}
for (int i = 1; i < size; i++) {
Node mNode = merge(ret, nodes.get(i));
if (mNode == null) {
ret.add(nodes.get(i));
} else {
ret.set(mNode.index, mNode);
}
}
return ret;
}
private static Node merge(List<Node> nodes, Node b) {
Node ret = null;
for (int i = 0; i < nodes.size(); i++) {
Node tmp = merge(nodes.get(i), b);
if (tmp != null) {
ret = tmp;
ret.index = i;
}
}
return ret;
}
private static Node merge(Node a, Node b) {
if (a.equals(b)) {
return a;
}
// 保证a在前b在后
if (a.start > b.start) {
// 交换a
Node tmp = a;
a = b;
b = tmp;
}
if (a.end < b.start) {
return null;
} else {
if (a.end < b.end) {
return new Node(a.start, b.end);
}
if (a.end > b.end) {
return new Node(a.start, a.end);
}
}
return null;
}
static class Node {
Integer start;
Integer end;
int index;
public Node(int start, int end) {
this.start = start;
this.end = end;
}
public boolean equals(Node obj) {
if (obj == null) {
return false;
}
if (start == obj.start && end == obj.end) {
return true;
}
return false;
}
}
}

View File

@ -0,0 +1,45 @@
package com.raorao.interview.bytedance.q5;
/**
* .
*
* @author Xiong Raorao
* @since 2018-08-12-10:16
*/
public class Main {
public static void main(String[] args) {
}
private static void process(int n, int m, int[] s, int[] t) {
}
private static int getMin(int[] src) {
int min = Integer.MAX_VALUE;
for (int i = 0; i < src.length; i++) {
if (min > src[i]) {
min = src[i];
}
}
return min;
}
private static int getMax(int[] src) {
int max = Integer.MIN_VALUE;
for (int i = 0; i < src.length; i++) {
if (max < src[i]) {
max = src[i];
}
}
return max;
}
static class ZB {
public int s;
public int t;
}
}

View File

@ -0,0 +1,11 @@
package com.raorao.java;
/**
* .
*
* @author Xiong Raorao
* @since 2018-08-10-23:27
*/
public class A {
}

View File

@ -0,0 +1,28 @@
package com.raorao.java;
public class Test {
static int a;
int b;
static int c;
public int aMethod() {
a++;
return a;
}
public int bMethod() {
b++;
return b;
}
public static int cMethod() {
c++;
return c;
}
public static void main(String args[]) {
String str = null;
System.out.println(str);
}
}

View File

@ -0,0 +1,11 @@
package com.raorao.java.test;
/**
* .
*
* @author Xiong Raorao
* @since 2018-08-10-23:27
*/
public class A {
}