1. 一个球场C的球迷看台可容纳M*N个球迷。官方想统计一共有多少球迷群体,最大的球迷群体有多少人。
球迷选座特性:1.
1.同球迷群体会选择相邻座位,不同球迷群体选择不相邻的座位。(相邻包括前后相邻、左右相邻、斜对角相邻);
2.给定一个M*N的二位球场,0代表该位置没人,1代表该位置有人,希望输出球队群体个数P,最大的球队群体人数Q。
输入:
第一行,2个数字,M  N,使用英文逗号隔开
接下来M行,每行N个数字,使用英文逗号隔开
输出:
一行 ,2数字,P   Q
import java.util.Scanner;public class no1 {static boolean[][] flag;static int[][] input;static int Q = 0;static int P = 0;static int num = 0;static int m;static int n;public static void main(String[] args) {Scanner in = new Scanner(System.in);String[] s = in.nextLine().split(",");m = Integer.parseInt(s[0]);n = Integer.parseInt(s[1]);input = new int[m][n];flag = new boolean[m][n];for(int i = 0; i < m; i++){String[] inputtemp = in.nextLine().split(",");for(int j = 0; j < n; j++){input[i][j] = Integer.parseInt(inputtemp[j]);}}in.close();for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){P += find(i, j);}}System.out.println(P +","+ Q);}public static int find(int i,int j){if(input[i][j] == 1 && !flag[i][j]){flag[i][j] = true;num ++;if(i != m - 1 && input[i+1][j] == 1 && !flag[i+1][j]){find(i+1, j);}if(i != 0 && input[i-1][j] == 1 && !flag[i-1][j]){find(i-1, j);}if(j != n-1 && input[i][j+1] == 1 && !flag[i][j+1]){find(i, j+1);}if(j != 0 && input[i][j-1] == 1 && !flag[i][j-1]){find(i, j-1);}if(i != 0 && j != 0 && input[i-1][j-1] == 1 && !flag[i-1][j-1]){find(i-1, j-1);}if(i != 0 && j != n-1 && input[i-1][j+1] == 1 && !flag[i-1][j+1]){find(i-1, j+1);}if(i != m-1 && j != n-1 && input[i+1][j+1] == 1 && !flag[i+1][j+1]){find(i+1, j+1);}if(i != m-1 && j != 0 && input[i+1][j-1] == 1 && !flag[i+1][j-1]){find(i+1, j-1);};}else{if(Q < num)Q = num;num = 0;flag[i][j] = true;return 0;}return 1;}}
2. 文章病句标识
题目描述:为了提高文章质量,每一篇文章(假设全部都是英文)都会有m名编辑审核,每个编辑独立工作,会把觉得有问题的句子通过下标记录下来,比如[1,10],1表示病句的第一个字符,10表示病句的最后一个字符。也就是从1到10个字符组成的句子,是有问题的。现在需要把多名编辑有问题的句子合并起来,送给总编辑进行最终的审核。比如编辑a指出的病句是[1,10],[32,45];b编辑指出的病句是[5,16],[78,94],那么[1,10]和[5,16]是有交叉的,可以合并成[1,16],[32,45],78,94]
输入描述:编辑数量m,之后每行是每个编辑的标记的下标集合,第一个和最后一个下标用英文逗号分隔,每组下标之间用分号分隔
输出描述:合并后的下标集合,第一个和最后一个下标用英文逗号分隔,每组下标之间用分号分隔。返回结果是从小到大的递增排列。
输入:
3
1,10;32,45
78,94;5,16
80,100;200,220;16,32
输出:
1,45;78,100;200,220
/**  自己写一个数据结构,然后对这个数据结构排序.*/import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;public class no2 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int m = Integer.parseInt(in.nextLine());ArrayList<Interval> input = new ArrayList<>();for(int i = 0; i < m; i++){String[] errorsClassifiedByEditors = in.nextLine().split(";");for(int j = 0; j < errorsClassifiedByEditors.length; j++){String[] errors = errorsClassifiedByEditors[j].split(",");input.add(new Interval(Integer.parseInt(errors[0]), Integer.parseInt(errors[1])));}}in.close();Collections.sort(input,new Comparator<Interval>(){@Overridepublic int compare(Interval o1, Interval o2) {return o1.start - o2.start;}  });Interval prev = null;ArrayList<Interval> results = new ArrayList<>();for(Interval item : input){if(prev == null || item.start > prev.end){results.add(item);prev = item;}else if(prev.end < item.end){prev.end = item.end;}}int count = 0;for(Interval item : results){if(count == results.size() - 1){System.out.print(item.start + "," + item.end);}else{System.out.print(item.start + "," + item.end + ";");}count ++;}}}class Interval{int start;int end;public Interval(int start, int end){this.start = start;this.end = end;}
}
3. 小a和小b玩一个游戏,有n张卡牌,每张上面有两个正整数x,y。
取一张牌时,个人积分增加x,团队积分增加y。
求小a,小b各取若干张牌,使得他们的个人积分相等。
输入描述:
第一行n
接下来n行,每行两个整数x,y
输出描述:
一行一个整数
表示小a的积分和小b的积分相等的时候,团队积分的最大值。
输入:
4
3 1
2 2
1 4
1 4
输出
10
数据范围:
0 < n < 100
0 < x < 1000
0 < y < 1e6\\动态规划
import java.util.Scanner;public class test3 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int num = scan.nextInt();int[] key = new int[num];int[] value = new int[num];int max = 0;for (int i = 0; i < num; i++) {int inputKey = scan.nextInt();int inputValue = scan.nextInt();key[i] = inputKey;value[i] = inputValue;max = max>inputKey?max:inputKey;}int[][] result = dp(num, max, key, value);System.out.print(result[num][0]);}public static int[][] dp(int num, int max, int[] key, int[] value){int[][] result = new int[num+1][max+1];for (int j = 0; j <= max; j++) result[0][j] = 0;for (int i = 1; i <= num; i++){for (int j = 0; j <= max; j++){int temp1=0, temp2=0;if (j-key[i-1]>=0) temp1 = result[i-1][j-key[i-1]] + value[i-1];if (j+key[i-1]<=max) temp2 = result[i-1][j+key[i-1]] + value[i-1];result[i][j] = Math.max(Math.max(result[i-1][j], temp1),temp2);if (i == 1 && j == 0) result[i][j] = 0;}}return result;}
}参考大神的代码:https://www.jianshu.com/p/83204e62ac94
4.两个长度为n的序列a,b
问有多少个区间[l,r]满足
max(a[l,r]) < min(b[l,r])
即a区间的最大值小于b区间的最小值
数据范围:
n < 1e5
ai,bi < 1e9
输入描述:
第一行一个整数n
第二行n个数,第i个为ai
第三行n个数,第i个为bi
0 <= l <= r < n
输出描述:
一行一个整数,表示答案
输入:
3
3 2 1
3 3 3
输出:
3import java.util.Scanner;public class test4 {public static void main(String[] args){Scanner scan = new Scanner(System.in);int num = scan.nextInt();int[] arr1 = new int[num];int[] arr2 = new int[num];for (int i = 0; i < num; i++){arr1[i] = scan.nextInt();}for (int i = 0; i < num; i++){arr2[i] = scan.nextInt();}System.out.println(resolve(arr1, arr2, 0, 0, 0, 0));}public static int resolve(int[] arr1, int[] arr2, int start, int end, int maxIndex, int minIndex) {if (start > end || end >= arr1.length) return 0;int max = arr1[maxIndex]>arr1[end]?maxIndex:end;int min = arr2[minIndex]<arr2[end]?minIndex:end;if (arr1[max] >= arr2[min]) return resolve(arr1,arr2,start+1,start+1, start+1, start+1);return 1+((end==arr1.length-1)?resolve(arr1,arr2,start+1,start+1, start+1, start+1):resolve(arr1,arr2,start,end+1,max,min));}
}参考大神的代码:https://www.jianshu.com/p/83204e62ac94
5. 小明在抖音关注了n个主播,每个主播每天的开播时间是固定的,分别在时刻开始,ti时刻结束。小明无法同时看两个直播。一天被分为m个时间单位。请问小明每天最多能完整观看多少个直播?
输入描述:
第一行一个整数,代表n
第二行一个整数,代表m
第三行空格分隔n*2个整数,代表s,t
输出描述:
一行一个整数,表示答案
输入:
3
10
0 3 3 7 7 0
输出
3
数据范围:
1 <= n <= 10^5
2 <= m <= 10^6
0 <= si,ti < mimport java.util.*;public class test5 {// 自定义区间类public static class Interval{public int begin;public int end;public Interval(int begin, int end){this.begin = begin;this.end = end;}public String toString(){return String.format(begin+"-"+end);}}public static class MyComparator implements Comparator<Object> {public int compare(Object o1,Object o2){Interval s1 = (Interval) o1;Interval s2 = (Interval) o2;return s1.begin - s2.begin;}}public static void main(String[] args){Scanner scan = new Scanner(System.in);int num = scan.nextInt();int over = scan.nextInt();List<Interval> list = new ArrayList<>();for (int i = 0; i < num; i++){int start = scan.nextInt();int end = scan.nextInt();list.add(new Interval(start,end));}Collections.sort(list,new MyComparator());List<Interval>[] arr = (ArrayList<Interval>[])new ArrayList[num];for (int i = 0; i < num; i++){arr[i] = new ArrayList<>();}for (Interval item : list){for (int j = 0; j < num; j++){if (arr[0].isEmpty()){arr[0].add(item);break;}if (arr[j].isEmpty()){break;}else if (arr[j].get(arr[j].size()-1).end > item.begin){continue;}else {arr[j].add(item);continue;}}}int max = 0;for (List<Interval> item : arr){max = max>item.size()?max:item.size();}System.out.println(max);}
}参考大神的代码:https://www.jianshu.com/p/83204e62ac94

2018年8月12日 今日头条笔试 整理相关推荐

  1. Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大

    Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大蟒 ...

  2. 【关于微信小程序登录信息】 微信即将不再支持wx.getUserInfo() 授权弹出框 2018年5月12日

    [声明本人菜鸡,最近小程序很火所以拿来看看] 先看一张图: 这是地址:点击打开链接(这个链接被转移了, 看下面截图吧) 显示微信可能处于安全考虑,这个方法已经不能用于自动获取用户信息了, 大致意思就是 ...

  3. 2018年俄罗斯世界杯对阵图(法国冠军杯![2018年 07月 12日 星期四 18:15:26 CST])

    A组 排名 球队 赛 胜 和 负 得 失 差 分 出线资格 1  俄罗斯 (H) 1 1 0 0 5 0 +5 3 晋级淘汰赛 2  乌拉圭 1 1 0 0 1 0 +1 3 3  埃及 1 0 0 ...

  4. 【每日快讯】2018年5月12日 [星期六]

    今日要闻 1.虎牙登陆纽交所:首日收盘较发行价上涨33.8% 2.滴滴顺风车全国停业整改一周 对司机全面审查 3.腾讯音乐将赴美上市 寻求IPO估值超250亿美元 4.酷派起诉小米涉嫌侵权 小米回应尚 ...

  5. 【2018年11月12日】其他化学制品行业的股票估值和排名

    中材科技(SZ002080),涨跌: (+1.77%),便宜指数: 90.77,滚动市盈率(PE):11.38,股息收益率 %: 2.34%,市净率(PB): 0.99,ROE: 8.72% 阳谷华泰 ...

  6. 【2018年11月12日】其他化学制品行业的股票估值

    中材科技(SZ002080),涨跌: (+1.77%),便宜指数: 90.77,滚动市盈率(PE):11.38,股息收益率 %: 2.34%,市净率(PB): 0.99,ROE: 8.72% 阳谷华泰 ...

  7. js学习笔记-2018年7月12日

    ---------------------------打印输出------------------------------ console.log在浏览器控制台打印 变量本身就是没类型的变量的类型取决 ...

  8. 2018年11月12日

    1.完成了thinkpad电脑上的 MySQL和MongoDB 安装和部署 转载于:https://www.cnblogs.com/0909/p/9949679.html

  9. 2018年9月12日

    解散解散解散 解散解散解散 解散解散解散 解散解散解散 解散解散解散 解散解散解散 解散解散解散 解散解散解散

  10. 网络工程行业介绍,认证介绍(一)(2018年1月12日 17:20:32)

    了解产品型号,了解所包含的功能(最新型号的路由器是哪些,运营商用哪些,企业用哪些,银行用哪些,政府能用哪些:都有哪些型号,各有什么样的功能,能使用哪些操作系统,能使用哪些模块:交换机当前比较主流的有哪 ...

最新文章

  1. The ECDSA host key for XXX has changed
  2. 深入探究系统中的输入输出管理
  3. AI生成中国山水画!普林斯顿姑娘本科毕业作品,骗过70%中国人
  4. struct和typedef struct
  5. 源码安装zabbix3.2.7时PHP ldap Warning
  6. 647. Palindromic Substrings 回文子串
  7. 我本人一直以来犯的错误,在看了 Think In Java 后才抓了出来
  8. 传京东将收购格力电器5%股权 官方回应:消息不实
  9. 谁能真正“撬动”微信?| 畅言
  10. 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,[转载]职称计算机考试(网络基础)试题答案、操作(一)...
  11. kali下使用远程桌面连接
  12. 07-11-Exchange Server 2019-配置-Outlook 2019-IMAP4
  13. 单目标跟踪——个人笔记
  14. 计算机桌面怎么添加便签,如何在电脑桌面上添加便签 这些知识你不一定知道...
  15. android+手机+用短信发pdf文件,iPhone如何将PDF通过短信邮件发给别人【仅限iPhone6/6s】...
  16. 清北学堂2019.7.16
  17. Z世代的投资 就选仁诚兴业
  18. 惠普服务器蓝屏怎么修复,惠普电脑蓝屏出现WDF_VIOLATION错误代码解决办法
  19. microduino与onetnet测试
  20. 拉普拉斯分布和拉普拉斯变换有什么区别

热门文章

  1. 计算机安全审计技术工作总结,计算机安全审计技术研究
  2. 宾馆管理c语言程序报告,C语言课程设计-宾馆客房管理系统报告.docx
  3. 革命!安装杜比声卡驱动
  4. CMYK,RGB颜色对照表
  5. 身份证号正则验证及提取性别出生年月出生时间
  6. 小程序源码:王者荣耀战力查询微信小程序源码下载支持安卓苹果微信QQ等多区查询
  7. 恢复Windows默认文件资源管理器(Files设置后,恢复亲测可用)
  8. 高鸿业宏观经济学第七版答案
  9. android分享截屏到微信,Android截屏分享功能
  10. 解决linux下 firefox 浏览器 视频无法播放问题