版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiao__jia__jia/article/details/82799709
2018/9/20小米内推笔试编程题
下面代买是昨晚笔试时只过50%的数据,感觉应该是输出的异数的顺序段发生变化了。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Map<Integer, Node2> map = new HashMap<Integer, Node2>();
String temp = in.nextLine();
int a = 0;
int b = 0;
while(!temp.equals("END")){
String str[] = temp.split("#");
a = Integer.parseInt(str[0]);
Integer aa = Integer.valueOf(str[1], a);
if(!map.containsKey(aa)){
map.put(aa, new Node2(temp, 1));
}else{
Node2 no = (Node2)map.get(aa);
map.put(aa, new Node2(no.a,no.b+1 ));
}
temp = in.nextLine();
}
boolean check = false;
Set<Integer> set = map.keySet();
Iterator<Integer> iterator = set.iterator();
while(iterator.hasNext()){
Integer aaa =iterator.next();
if(map.get(aaa).b == 1){
check = true;
System.out.println(map.get(aaa).a);
}
}
if(!check){
System.out.println("None");
}
}
}
class Node2{
String a;
int b;
public Node2(String a, int b){
this.a = a;
this.b = b;
}
}
第二道完全没有思路,听说leetcode的42题的进化版。
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Main1 {
/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
******************************开始写代码******************************/
static int findMaxCapacity(int[] array, int m) {
return 12;
}
/******************************结束写代码******************************/
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int res;
int _array_size = 0;
_array_size = Integer.parseInt(in.nextLine().trim());
int[] _array = new int[_array_size];
int _array_item;
for(int _array_i = 0; _array_i < _array_size; _array_i++) {
_array_item = Integer.parseInt(in.nextLine().trim());
_array[_array_i] = _array_item;
}
int _m;
_m = Integer.parseInt(in.nextLine().trim());
res = findMaxCapacity(_array, _m);
System.out.println(String.valueOf(res));
}
}
先看下leetcode的42题
42. 接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。
示例:
输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 题解:题目不难,观察下就可以发现被水填满后的形状是先升后降的塔形,因此,先遍历一遍找到塔顶,然后分别从两边开始,往塔顶所在位置遍历,水位只会增高不会减小,且一直和最近遇到的最大高度持平,这样知道了实时水位,就可以边遍历边计算面积。
class Solution {
public:
int trap(int A[], int n) {
if(n <= 2) return 0;
int max = -1, maxInd = 0;
int i = 0;
for(; i < n; ++i){
if(A[i] > max){
max = A[i];
maxInd = i;
}
}
int area = 0, root = A[0];
for(i = 0; i < maxInd; ++i){
if(root < A[i]) root = A[i];
else area += (root - A[i]);
}
for(i = n-1, root = A[n-1]; i > maxInd; --i){
if(root < A[i]) root = A[i];
else area += (root - A[i]);
}
return area;
}
};