剑指Offer——乐视笔试题+知识点总结

情景回顾

  • 时间:2016.9.19 15:10-17:10
  • 地点:山东省网络环境智能计算技术重点实验室
  • 事件:乐视笔试

  总体来说,乐视笔试内容体量不算少,主要分为35道选择题,3道编程题,时间稍微有点紧张。

编程题

数字游戏

package cn.edu.ujn.practice;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
/**
 *
 * @author SHQ
数字游戏
    时间限制:C/C++语言 1000MS;其他语言 3000MS
    内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
    真是一个无聊的夜晚啊,小B和小C在宿舍中实在无聊之极,因此决定玩一个数字游戏打发时间。小B首先开始,她给小C的问题是:

    给定任意一个整数,小C可以交换该数中任意的不同位,能够得到的最小数值是多少?前提是不能有前导0。

    小C很快就给出了一个答案,小B希望你来帮她检验答案的正确性,你能帮忙吗?
输入
    输入中有多组测试数据。每组测试数据的第一行为一个没有前导0的整数n(0=< n =< 10^9),第二行为另一个整数m(0=<m=<10^9),小C给出的问题答案。
输出
    对每组测试数据,在单独的行中输出结果,若小C的答案是正确的,输出YES,否则输出NO。

    样例输入
    3310
    1033
    4
    5
    样例输出
    YES
    NO

    思路:
        拆分+比较器   40%
 */
public class LeShi_1 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {//注意while处理多个case
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(resolution(a, b));
        }
    }

    private static String resolution(int a, int b){
        if(a < 0 || b < 0 || a > 1000000000 || b > 1000000000)
            return "NO";
        if(a == 0 && b == 0){
            return "YES";
        }
        if(a == 0 && b != 0){
            return "NO";
        }
        ArrayList<Integer> list = new ArrayList<Integer>();
        while(a > 0){
            list.add(a % 10);
            a /= 10;
        }
        int [] numbers = new int [list.size()];
        for(int i = 0; i < list.size(); i++){
            numbers[i] = list.get(i);
        }

        String result = PrintMinNumber(numbers);
//      System.out.println(result);
        if(result.equals(String.valueOf(b)))
            return "YES";
        else
            return "NO";
    }

    private static String PrintMinNumber(int [] numbers) {
        if(numbers == null || numbers.length == 0){
            return null;
        }
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int i = 0; i < numbers.length; i++){
            list.add(numbers[i]);
        }
        // 升序(自定义比较器)
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer str1, Integer str2) {// 实现接口中的方法
                return (str1+""+str2).compareTo(str2+""+str1);
            }
        });

        StringBuffer sb = new StringBuffer();
        int cnt = 0;
        for(int str : list){
            if(str == 0)
                cnt++;
        }
        sb.append(list.get(cnt));
        for(int i = 0; i < cnt; i++){
            sb.append(0);
        }
        for(int i = cnt+1; i < list.size(); i++){
            sb.append(list.get(i));
        }
        return sb.toString();
    }
}

  此题通过率40%。用到了之前在《剑指Offer》中类似的代码。可见,多刷题,有效的刷题还是有效果的。

数正方形

时间限制:C/C++语言 1000MS;其他语言 3000MS

内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

小B正在做一个关于图像理解方面的研究,她的目标是识别图像中的轮廓。当前阶段,她希望能够识别正方形。图像用一个矩阵表示,矩阵的每个元素对应于图像中的一个像素点,值为0或1,0表示背景,1表示前景。需要寻找的正方形必须满足线宽为单像素,且大小至少为2x2。她希望你能帮她找出图像中满足如下条件的两类正方形:

正方形的边与矩阵边缘平行;

正方形的边与矩阵对角线平行;

如以下矩阵中只有一个第一类正方形:

0000000

0111100

0100100

0100100

0111100

以下的矩阵中只有一个第二类正方形:

0000000

0010000

0101000

0010000

0000000

此外,不管何种类型的正方形,其每条边必须等长,且不能有任何边或顶点的像素与不属于该正方形的像素相连接。

输入

输入中有多组测试数据。第一行为一个整数t(1 =< t =< 10000),表示测试数据的组数,接下来是t组测试数据。每组测试数据的第一行为两个整数n和m(2<=n, m<=250),n和m分别为矩阵的行数和列数,接下来是n行数据,每行由m个0或1构成。

每个测试输入中的字符数不超过10^6个。

输出

对每组测试数据,在单独的行中输出矩阵中符合要求的正方形的数量。

样例输入

3

8 8

00010001

00101000

01000100

10000010

01000100

00101000

11010011

11000011

10 10

1111111000

1000001000

1011001000

1011001010

1000001101

1001001010

1010101000

1001001000

1000001000

1111111000

12 11

11111111111

10000000001

10111111101

10100000101

10101100101

10101100101

10100000101

10100000101

10111111101

10000000001

11111111111

00000000000

样例输出

1

2

3

跳跃的蚂蚱

package cn.edu.ujn.practice;

import java.util.Scanner;

/**
 *
 * @author SHQ
跳跃的蚂蚱
    时间限制:C/C++语言 1000MS;其他语言 3000MS
    内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
    小B对脑筋急转弯问题很有兴趣,她觉得这种问题的挑战能够反映一个人的应急反应能力。她正在开发一个智力测试的游戏,游戏的主角是一个蚂蚱。蚂蚱最初位于0点处,可以在直线上向正向或反向两个方向跳跃。比较特别的是,蚂蚱每次跳跃的距离比前一次跳跃多一个单位,第一次跳跃的距离为一个单位。

    小B的问题是,如果让蚂蚱跳跃到x处,需要经过多少次跳跃,你能解决这个问题吗?
输入
    输入中有多组测试数据。每组测试数据为单独的一行,包含一个整数x(-10^9 =< x =< 10^9)。
输出
    对每组测试数据,在单独的行中输出蚂蚱最少需要跳跃的次数。

样例输入
    2
    6
    0
样例输出
    3
    3
    0
*/
public class LeShi_3 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int a = in.nextInt();
            System.out.println(resolution(a));
        }
    }

    private static int resolution(int a){
        int cnt = 0;
        int pos = 0;
        int jump = 1;
        if(a == 0)
            return 0;
        while(true){
            cnt++;
            if(a > pos + jump){
                // 起始向右跳
                pos += jump;
            }else if (a < pos + jump){
                // 起始向左跳
                pos -= jump;
            }
            if(jump != 1 && pos+jump == a)
                return cnt;
            jump++;
        }
    }
}


剑指Offer——乐视笔试题+知识点总结的更多相关文章

  1. 剑指Offer——顺丰笔试题+知识点总结

    剑指Offer--顺丰笔试题+知识点总结 情景回顾 时间:2016.10.16 19:00-20:40 地点:山东省网络环境智能计算技术重点实验室 事件:顺丰笔试 知识点总结 快排 霍尔排序(快排) ...

  2. 剑指Offer——携程笔试题+知识点总结

    剑指Offer--携程笔试题+知识点总结 情景回顾 时间:2016.9.17 19:10-21:10 地点:山东省网络环境智能计算技术重点实验室 事件:携程笔试 总体来说,携程笔试内容与其它企业笔试题 ...

  3. 剑指Offer——京东校招笔试题+知识点总结

    剑指Offer--京东校招笔试题+知识点总结 笔试感言 经过一系列的笔试,发觉自己的基础知识还是比较薄弱的,尤其是数据结构和网络,还有操作系统.工作量还是很大的.做到精确制导的好方法就是在网上刷题,包 ...

  4. 剑指Offer——CVTE校招笔试题+知识点总结(Java岗)

    剑指Offer(Java岗)--CVTE校招笔试题+知识点总结 2016.9.3 19:00参加CVTE笔试,笔试内容如下: 需要掌握的知识:Linux基本命令.网络协议.数据库.数据结构. 选择题 ...

  5. 剑指Offer——京东实习笔试题汇总

    剑指Offer--京东实习笔试题汇总 编程题1 题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息. n.s.B.S其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入 ...

  6. 剑指Offer——联通研究院笔、面试题 (Offer已收割)

    剑指Offer--联通研究院笔.面试题 1.二叉树适宜存储什么样的数据? 树最适合用来表示( C ). A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 ...

  7. 剑指Offer——好未来视频面知识点储备+面后总结

    剑指Offer--好未来视频面知识点储备+面后总结 情景介绍 时间:2016.10.12 13:00- 地点:宿舍 事件:好未来视频面 知识点储备 数据结构 单链表反转 public class Li ...

  8. 《剑指Offer》各面试题总结

    目录 前言 面试题4 二维数组的查找 面试题5:替换空格 面试题6:从尾到头打印链表 面试题7:重建二叉树 面试题8:二叉树的下一个节点 面试题9:用两个栈实现队列 面试题10:斐波那契数列 面试题1 ...

  9. 剑指 offer代码解析——面试题39推断平衡二叉树

    题目:输入一颗二叉树的根结点.推断该树是不是平衡二叉树. 假设某二叉树中随意结点的左右子树的高度相差不超过1,那么它就是一棵平衡二叉树. 分析:所谓平衡二叉树就是要确保每一个结点的左子树与右子树的高度 ...

随机推荐

  1. bzoj2535 [Noi2010]航空管制

    Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上 ...

  2. [Codeforces]862F - Mahmoud and Ehab and the final stage

    题目大意:n个字符串,支持修改一个位置上的字符串和查询一个区间的子区间中长度乘LCP的最大值,输入字符数和询问数不超过10^5. 做法:求出相邻的LCP长度,区间LCP等于区间最小值,查询分几种情况考 ...

  3. ●洛谷P3687 [ZJOI2017]仙人掌

    题链: https://www.luogu.org/problemnew/show/P3687题解: 计数DP,树形DP. (首先对于这个图来说,如果初始就不是仙人掌,那么就直接输出0) 然后由于本来 ...

  4. hdu 5739 割点

    Fantasia Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  5. sql的left join 、right join 、inner join之间的区别

    sql中left join .right join .inner join之间的区别 left join (左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 : right join (右 ...

  6. django rest-framework 4.REST的认证和权限

    目前,我们的API对谁可以编辑或删除代码段没有任何限制.我们想要一些更先进的行为,以确保:(这段话抄自官网) 代码段始终与创建者相关联. 只有身份验证的用户可以创建片段. 只有片段的创建者可以更新或删 ...

  7. C语言程序设计第三次作业——选择结构(一)

    (一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...

  8. 认识Json解析json生成json

    .markdown-body hr::after,.markdown-body::after { clear: both } .loopLine,.messageLine0 { } .markdown ...

  9. 在Spring Boot中使用Spring Security实现权限控制

    丢代码地址 https://gitee.com/a247292980/spring-security 再丢pom.xml <properties> <project.build.so ...

  10. 如果将Joomla网站搜索结果显示到一个“干净”页面

    有时候大家会发现Joomla网站自带的或者第三方的搜索功能时,搜索结果会显示在首页,和首页其它的模块如图片橱窗等显示在一起,非常混乱. 在这里教大家一个不需要修改代码的小技巧来解决这个问题,使搜索结果 ...