完美世界笔试题

news/2024/10/18 2:37:52/

算法编程

这里写图片描述
这里写图片描述

思路

dp算法,但是题目需要多组输入,所以动归不是关键啦
题目的样例有误导性,没有负数啊。。。。
还有,输出最长数组就行了,不用输出一个数字表示长度

代码

第一题,88%

package Alibaba;import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** Created by luzhonghao on 16/4/25.*/
public class Main {public static  int LISS(int array[], int length, int result[]){int i, j, k, l, max;//递增子序列中最大值最小的子序列的最后一个元素(最大元素)在array中的位置int [] liss = new int[length];//前驱元素数组,用于打印序列int [] pre = new int[length];liss[0] = 0;for(i = 0; i < length; ++i){pre[i] = i;}for(i = 1, max = 1; i < length; ++i){//找到这样的j使得在满足array[liss[j]] > array[i]条件的所有j中,j最小j = 0;k = max - 1;while(k - j > 1){l = (j + k) / 2;if(array[liss[l]] < array[i]){j = l;}else{k = l;}}if(array[liss[j]] < array[i]){j = k;}//array[liss[0]]的值也比array[i]大的情况if(j == 0){//此处必须加等号,防止array中存在多个相等的最小值时,将最小值填充到liss[1]位置if(array[liss[0]] >= array[i]){liss[0] = i;continue;}}//array[liss[max -1]]的值比array[i]小的情况if(j == max - 1){if(array[liss[j]] < array[i]){pre[i] = liss[j];liss[max++] = i;continue;}}pre[i] = liss[j - 1];liss[j] = i;}//输出递增子序列i = max - 1;k = liss[max - 1];while(pre[k] != k){result[i--] = array[k];k = pre[k];}result[i] = array[k];return max;}public static void main(String[] args) {Scanner s = new Scanner(System.in);while (s.hasNext()) {String line = s.nextLine();line = line.trim();if (line.equals("")) {System.out.println("");continue;}// System.out.println(line);String patternStr = "[-\\d+\\s*]+";Pattern p = Pattern.compile(patternStr);Matcher m = p.matcher(line);boolean flg = m.matches(); if (flg) {String[] content = line.split(" ");ArrayList<Integer> iArrayList = new ArrayList<Integer>();//              int i = 0;boolean stop = false;for (String sc : content) {if (!sc.equals("")) {try {int temp = Integer.valueOf(sc);iArrayList.add(temp);
//                          input[i++] = temp;} catch (Exception e) {stop = true;break;}}}if (stop == false && iArrayList.size() > 0) {int [] input = new int [iArrayList.size()];int i = 0;for (int item : iArrayList) {input[i++] = item;}int[] result = new int[i];int ret = LISS(input, input.length, result);for (int j = 0; j < ret; ++j) {if (j == ret - 1) {System.out.println(result[j]);} else {System.out.print(result[j] + " ");}}}}}}
}

第二题,78%

package first;import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** Created by luzhonghao on 16/4/25.*/
public class Main {public static  int LISS(int array[], int length, int result[]){int i, j, k, l, max;//递增子序列中最大值最小的子序列的最后一个元素(最大元素)在array中的位置int [] liss = new int[length];//前驱元素数组,用于打印序列int [] pre = new int[length];liss[0] = 0;for(i = 0; i < length; ++i){pre[i] = i;}for(i = 1, max = 1; i < length; ++i){//找到这样的j使得在满足array[liss[j]] > array[i]条件的所有j中,j最小j = 0;k = max - 1;while(k - j > 1){l = (j + k) / 2;if(array[liss[l]] < array[i]){j = l;}else{k = l;}}if(array[liss[j]] < array[i]){j = k;}//array[liss[0]]的值也比array[i]大的情况if(j == 0){//此处必须加等号,防止array中存在多个相等的最小值时,将最小值填充到liss[1]位置if(array[liss[0]] >= array[i]){liss[0] = i;continue;}}//array[liss[max -1]]的值比array[i]小的情况if(j == max - 1){if(array[liss[j]] < array[i]){pre[i] = liss[j];liss[max++] = i;continue;}}pre[i] = liss[j - 1];liss[j] = i;}//输出递增子序列i = max - 1;k = liss[max - 1];while(pre[k] != k){result[i--] = array[k];k = pre[k];}result[i] = array[k];return max;}public static void main(String[] args) {Scanner s = new Scanner(System.in);if (s.hasNext()) {String line = s.nextLine();line = line.trim();if (line.equals("")) {System.out.println("error");
//              continue;}// System.out.println(line);String patternStr = "[-\\d+\\s*]+";Pattern p = Pattern.compile(patternStr);Matcher m = p.matcher(line);boolean flg = m.matches(); if (flg) {String[] content = line.split(" ");ArrayList<Integer> iArrayList = new ArrayList<Integer>();//              int i = 0;for (String sc : content) {if (!sc.equals("")) {try {int temp = Integer.valueOf(sc);iArrayList.add(temp);
//                          input[i++] = temp;} catch (Exception e) {System.out.println("error");return;}}}if (iArrayList.size() > 0) {int [] input = new int [iArrayList.size()];int i = 0;for (int item : iArrayList) {input[i++] = item;}int[] result = new int[i];int ret = LISS(input, input.length, result);for (int j = 0; j < ret; ++j) {if (j == ret - 1) {System.out.println(result[j]);} else {System.out.print(result[j] + " ");}}}} else {System.out.println("error");}}}
}

最后没来及改,在判断有2-之类的错误输入的时候,应该是直接输出error,第一题是直接输出换行。

关键点在正则:一定要把Java正则表达式搞清楚。

其他论述题

sleep和wait区别
抽象类和接口区别
runnable和thread区别


http://www.ppmy.cn/news/662900.html

相关文章

完美世界服务器维护到几点,《完美世界》官方网站

3月15日8&#xff1a;00--10&#xff1a;00&#xff0c;《完美世界》全部服务器将进行全面停机维护&#xff0c;此次更新历时2小时&#xff0c;维护后游戏版本将更新至0.9.7&#xff0c;其它具体更新内容如下&#xff1a; 1、开放占领领土获得额外双倍时间。帮派占领的领土越多…

完美世界如何修改服务器ip,完美世界:完美整容及修改身材流程

1.代码整容流程: 先打开 《完美世界》\element\userdata\character 的ini文件就可以达到~ character71.ini 为女羽灵的形象修改默认配置 character70.ini 为男羽灵的形象修改默认配置 character00.ini 为男武侠的形象修改默认配置 character10.ini 为男法师的形象修改默认配置…

完美世界服务端linux,完美世界服务端视频架设教程

完美世界服务端视频架设教程 完美世界服务端视频架设教程 系统运行库: libtask.tar.gz compat-libstdc++-33-3.2.3-61.i386.rpm pcre-7.0-2.i386.rpm (一般不用装) JASDK: java_ee_sdk-5_03-linux.bin compat-libstdc++-33-3.2.3-61.i386.rpm(JASDK装不了,装这个在装JASDK) 我是…

python+读取前端所有的js文件,从而获取前端调取后端的所有接口

读取前端所有的js文件&#xff0c;从而获取前端调取后端的所有接口&#xff0c;发送请求 import json import os import reimport pymysql import requestsclass UrlFetcher:def __init__(self, db_config, host, headers):self.db_config db_config # 数据库配置self.host …

Android的WIFI和以太网连接状态

在一些 Android 设备上同时具有以太网和Wifi网络连接 我们可以使用 ConnectivityManager 类来判断设备的网络状态。以下是一个 Kotlin 示例&#xff0c;说明了如何检查网络连接状态以及连接类型&#xff08;例如 Wi-Fi 或移动数据&#xff09;&#xff1a; 首先&#xff0c;确…

任正非:发展芯片,光砸钱不行,还要砸人

30多年前&#xff0c;硅谷在半导体芯片领域&#xff08;当时主要是半导体存储占据主流&#xff09;的发展模式主要是&#xff1a; 通过风投注入资金&#xff0c;科创企业获得注资后&#xff0c;进行持续的技术创新获得市场&#xff0c;提升公司估值&#xff0c;然后上市&#…

linux中安装openoffice

linux中安装openoffice 原创衬衫码农 最后发布于2019-04-23 13:50:44 阅读数 3425 收藏 展开 1.下载tar.gz包。下载地址&#xff1a;http://www.openoffice.org/zh-cn/ (需要下载rpm格式的) 2.通过xftp上传到linux中。我的目录在/opt/openoffice中 3.解压文件&#xff1a;tar…

日本现代数学发展历程及其启示

前不久&#xff0c;日本数学家柏原正树在第28界国际数学家大会上荣获数学最高终身成就奖“陈省身奖”。而此届大会主席也恰巧是日本著名数学家森重文&#xff0c;他曾于1990年荣获菲尔兹奖。于是&#xff0c;日本数学再一次成为了焦点。时至今日&#xff0c;日本数学家共获得三…