今日头条笔试题1(经典的floodfill问题):

具体可以参考leetcode 200题:Number of Islands

1. 一个球场C的球迷看台可容纳M*N个球迷。官方想统计一共有多少球迷群体,最大的球迷群体有多少人。

球迷选座特性:1.

1.同球迷群体会选择相邻座位,不同球迷群体选择不相邻的座位。(相邻包括前后相邻、左右相邻、斜对角相邻);

2.给定一个M*N的二位球场,0代表该位置没人,1代表该位置有人,希望输出球队群体个数P,最大的球队群体人数Q。

输入:

第一行,2个数字,M  N,使用英文逗号隔开

接下来M行,每行N个数字,使用英文逗号隔开

输出:

一行 ,2数字,P   Q

package com.casm.test;import java.util.Scanner;/*** @author yangyang* 2018年8月14日上午10:26:36* 此题是2018年8.12 今日头条的笔试题第一题:该问题是经典的floodfill问题* 具体可以参考leetcode 200题:Number of Islands*/public class Main {//定义一个8*2的二维数组 记录八个方向static int[][] d=new int[][] {{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};//定义全局变量 记录临时的最大球迷数static int temp=0;public static void main(String[] args) {Scanner in = new Scanner(System.in);String[] mn=in.nextLine().split(",");int m=Integer.parseInt(mn[0]);int n=Integer.parseInt(mn[1]);//二维数组int[][] nums=new int[m][n];for(int i=0;i<m;i++){String[] temp=in.nextLine().split(",");for(int j=0;j<n;j++){nums[i][j]=Integer.parseInt(temp[j]);}}//标记位boolean[][] flag=new boolean[m][n];//定义res记录球迷群体数int res=0;//定义max记录最大球迷数int max=0;//遍历二维数组的每个点for(int i=0;i<m;i++)for(int j=0;j<n;j++){//如果当前点为1代表有球迷 且标记位为false代表没标记过if(nums[i][j]==1&&!flag[i][j]){//res和temp+1res++;temp++;//开始dfs深度优先遍历dfs(nums,i,j,flag);}//取最大值max=Math.max(max, temp);//初始化temptemp=0;}System.out.println(res+","+max);}//深度优先遍历dfs函数,dfs的本质是递归private static void dfs(int[][] nums, int x, int y, boolean[][] flag) {//首先标记为trueflag[x][y]=true;//开始遍历8个方向for(int k=0;k<8;k++){int newx=x+d[k][0];int newy=y+d[k][1];//同时满足三个条件:1.在边界内(注意这个条件必须放在前面 不然可能数组边界异常!)//                  2.值为1,即是球迷//                 3.未被标记过if(isbound(newx,newy,nums)&&nums[newx][newy]==1&&flag[newx][newy]==false){                temp++;//递归调用dfs(nums, newx, newy, flag);}}}//判断边界条件private static boolean isbound(int x, int y, int[][] nums) {return x>=0&&x<nums.length&&y>=0&&y<nums[0].length;}}

今日头条笔试第二题:

考点:区间合并(关于区间合并问题请参考我的另一篇博客https://blog.csdn.net/ustcyy91/article/details/81669176)
 * 类似:参考leetcode56. Merge Intervals

合并区间关键在于寻找是否存在前一个区间的结束值大于后一个区间的开始值,若存在,则这两个区间就可以合并。理解这个并不难,但对数据的处理有一个小技巧,就是将所有区间的开始值和结束值都排好序,这样在合并区间的时候会更简单一些,这也是区间问题常用的套路,排序过后就是合并过程了,具体过程看代码吧。

package com.casm.test;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;/*** @author yangyang** 2018年8月14日下午1:54:39* 今日头条笔试题 第二题* 考点:区间合并* 类似:参考leetcode56. Merge Intervals*/
public class MergeInteval {public static void main(String[] args) {ArrayList<Interval> list=new ArrayList<>();Scanner sc=new Scanner(System.in);int n=Integer.parseInt(sc.nextLine());for(int i=0;i<n;i++){String[] temp=sc.nextLine().split(";");for(int j=0;j<temp.length;j++){String[] temp2=temp[j].split(",");list.add(new Interval(Integer.parseInt(temp2[0]), Integer.parseInt(temp2[1])));}}int[] starts=new int[list.size()];int[] ends=new int[list.size()];for(int i=0;i<list.size();i++){starts[i]=list.get(i).start;ends[i]=list.get(i).end;}list.clear();//区间合并的关键是 排序starts 和ends数组Arrays.sort(starts);Arrays.sort(ends);//区间合并的核心代码(必背)for(int i=0,j=0;i<starts.length;i++){if(i==starts.length-1||starts[i+1]>ends[i]){list.add(new Interval(starts[j],ends[i]));j=i+1;}}for(int i=0;i<list.size();i++) {System.out.print(list.get(i).start+","+list.get(i).end);System.out.print(";");}}}//自定义数据结构
class Interval{int start;int end;public Interval(int start, int end) {this.start = start;this.end = end;}
}

第四题:

暴力搜索:时间复杂度O(N*N) 可以优化

package com.casm.test;import java.util.Scanner;public class JRTT3 {public static void main(String[] args) {int res=0;Scanner sc=new Scanner(System.in);int n=Integer.parseInt(sc.nextLine());int[] a=new int[n];int[] b=new int[n];String[] sa=sc.nextLine().split(" ");String[] sb=sc.nextLine().split(" ");for(int i=0;i<n;i++){a[i]=Integer.parseInt(sa[i]);b[i]=Integer.parseInt(sb[i]);}for(int i=0;i<n;i++)for(int j=i;j<n;j++){if(getMax(a,i,j)<getMin(b,i,j))res++;}System.out.println(res);}private static int getMin(int[] b, int i, int j) {int min=Integer.MAX_VALUE;for(int k=i;k<=j;k++){min=Math.min(min, b[k]);}return min;}private static int getMax(int[] a, int i, int j) {int max=Integer.MIN_VALUE;for(int k=i;k<=j;k++){max=Math.max(max, a[k]);}return max;}}

第五题:

今日头条2018.8.12笔试题总结相关推荐

  1. 今日头条2018安卓实习笔试题

    好多天前做的头条,今日补上博客. 第一题 题意 在n个元素的数组中,找到差值为k的数字对去重后的个数. 输入描述: 第一行包含两个正整数,n和k,n表示数字个数,k表示差值. 第二行,n个正整数 输出 ...

  2. 今日头条2018秋招笔试题(二)合并重叠病句

    问题描述: 多个编辑对一篇论文进行评审,每个编辑找出若干个病句,用[s, t]表示,s代表病句起始位置,t代表病句终止位置.不同编辑找出的病句可能有重叠,如[1,5]和[2,7],可以合并为[1,7] ...

  3. 2018今日头条大数据方向笔试题

    题目链接 一.一道繁琐的大模拟 N个产品经理,M个程序员,P个需求.N个产品经理向M个程序员提出P个需求. 每个需求用四元组表示:产品经理ID(谁提出的) 提出时间 优先级(数字越大优先级越高) 需求 ...

  4. 数据分析真题日刷 | 网易2018实习生招聘笔试题-数据分析实习生

    上周开始实习,博客更新就缓下来了.这是十天前做的套题了,现在拾起来把它再整理整理. 网易数据分析实习生的笔试题,和校招的题目还是有部分重复的,不过难度也不小. 今日真题 网易2018实习生招聘笔试题- ...

  5. 网易2018实习生招聘笔试题-JAVA开发实习生

    网易2018实习生招聘笔试题-JAVA开发实习生 如何从有数字规律的网址抓取网页并保存在当前目录?假设网址为 http://test/0.xml,其中这个数字可以递增到100. for(int i=0 ...

  6. 2018 java 美团笔试题

    想进美团的同学注意了,这里是修真院面试笔记整理,那么这里就给大家分享一下 [2018 java 美团笔试题] 技术一面 1.我们先聊聊java基础知识吧,说出Object类的常用方法? 2.刚刚说到o ...

  7. 解读《今日头条2018手机行业白皮书》:手机品牌们如何逆周期生长

    流量红利消失,智能手机市场步入存量期的话题萦绕着整个2018年. 一年来,想必大家也看了不少相关报道.外界有不少声音认为智能手机行业已迎来寒冬,但从字节跳动算数中心在今日头条手机行业年度峰会上发布的& ...

  8. 【牛客】网易2018实习生招聘笔试题——数据分析师实习生解析

    [牛客]网易2018实习生招聘笔试题--数据分析师实习生解析 * 选择题根据牛客网下方讨论整理,三道大题均为自己答案,欢迎大家讨论并给予指正. (https://www.nowcoder.com/te ...

  9. 头条2020届实习生笔试题

    头条2020届实习生笔试题 一卷 编程题: 输入某年某月某日,判断这一天是这一年的第几天? // 判断是否为闰年function isRun(a) {return a % 4 == 0 &&a ...

最新文章

  1. Scrum Master是什么?Scrum Master的职责是什么?和PM又有哪些区别?
  2. 世界首批智能音箱AI IQ测试报告,小米、京东和阿里初步PK
  3. 关于Debug和Release编译方式
  4. linux docker 与 iptables 的关系
  5. Linux C编程--进程介绍2--exec函数
  6. 利用OpenCV的VideoCapture类实现视频读操作
  7. Docker容器的使用方法
  8. Mongodb基本操作说明
  9. String与Array
  10. C++笔记:select多路复用机制
  11. 为什么计算机语言都是英语,编程为什么都是英语 编程为什么没有汉语
  12. 从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?...
  13. linux系统入门命令大全,Linux常用命令5 - Linux 入门常用命令_Linux教程_Linux公社-Linux系统门户网站...
  14. 开源GIS(十九)——WKT、WKB与GeoJSON
  15. 大数据时代,数据恢复技巧你会了吗?
  16. redis的主从复制和高可用集群
  17. 三维重建开源代码汇总【保持更新】
  18. Java实现文件上传详解
  19. 【Python学习】最新版pyecharts之绘制Map地图
  20. 神经系统图 基本结构图,神经系统结构图示意图

热门文章

  1. SprinBoot集成disConf的过程梳理
  2. Machine Learning 机器学习
  3. 怎么制作地图分布图,如何在地图上画出区域
  4. 跑步节奏音乐匹配Android项目开发和调试经验
  5. 金融知识小科普 - 宽基指数
  6. Anchor-based 与 Anchor-free 优缺点
  7. acm刷题一些总结,至每一个努力拼搏的acmer
  8. 用python画小王八裤(turtle库)
  9. 《读者》的“卷首语” (二)
  10. 使用rust和actix实现一个视频流服务器