华为od有不是编程题的笔试吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为od有不是编程题的笔试吗相关的知识,希望对你有一定的参考价值。
参考技术A 华为od没有不是编程题的笔试。根据查询相关公开信息,华为OD的面试首先会有一轮机考,机考是在牛客网上做编程题。总共三道题,据说是一道简单两道中等,总分400分,150分以上就算通过。华为od英文全称是OutsourcingDispacth模式,是华为和北京外企德科人力资源服务上海有限公司联合招聘的简称。华为大多数是OD招聘,18级以下都为OD模式。OD模式也是华为提出的一种新的用工形式,定级是13到17级,属于华为储备人才,每年都会从OD项目挑优秀员工转为正编。2017-08-23 华为笔试第二道编程题详解
[题目描述]
给定一个整数,给出消除重复数字以后最大的整数
输入描述 :正整数,注意考虑长整数
输出描述 : 消除重复数字后的最大整数
[示例1]
输入 : 423234
输出 : 432
[思路]
使用栈作为辅助工具,首先从前往后遍历数组
* 栈为空就压入栈
* 栈非空,判断当前数组元素是否大于栈顶元素
* 是 , 判断栈顶元素是否在后面的数组中存在,如果存在就弹出栈顶元素
* 判断栈中是否已经存在当前数组元素,否,将当前数组元素压入栈
[参考]
http://www.cnblogs.com/pk28/p/7421214.html
[代码]
public class Test2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
char[] inputCharArray = in.nextLine().toCharArray();
int size = inputCharArray.length;
int[] inputArray = new int[size];
//处理输入数据
for (int i = 0; i < size; i++) {
inputArray[i] = inputCharArray[i] - ‘0‘;
}
Stack numberStack = new Stack();
for (int i = 0; i < size; i++) {
if(numberStack.isEmpty()){
numberStack.push(inputArray[i]);
}else {
int currentNumber = inputArray[i];
int stackTop = (int)numberStack.peek();
if(currentNumber > stackTop){
boolean isExistForward = findIfExistForward(inputArray, stackTop, i + 1, size - 1);
if(isExistForward){
numberStack.pop();
}
}
boolean isExistInStack = findIfExistBackward(numberStack, currentNumber);
if(!isExistInStack){
numberStack.push(currentNumber);
}
}
}
for (int i = 0; i < numberStack.size(); i++) {
System.out.print(numberStack.get(i));
}
}
/**
* 判断inputCharArray数组中,下标从i到(length-1)是否有currentNumber的重复元素
* @param inputCharArray 源数组
* @param currentNumber
* @param i
* @param end
*/
private static boolean findIfExistForward(int[] inputCharArray, int currentNumber, int i, int end) {
while (i <= end){
if(inputCharArray[i] == currentNumber){
return true;
}
i++;
}
return false;
}
/**
* 判断栈中,是否已存在currentNumber元素
* @param numberStack
* @param currentNumber
* @return
*/
private static boolean findIfExistBackward(Stack numberStack, int currentNumber) {
if(numberStack.search(currentNumber) == -1){
return false;
}else {
return true;
}
}
}
[测试用例]
1、输入 : 423234 输出 : 432
2、输入 : 432143214321 输出 : 4321
3、输入 : 42189214 输出 : 42891
以上是关于华为od有不是编程题的笔试吗的主要内容,如果未能解决你的问题,请参考以下文章