zoukankan      html  css  js  c++  java
  • 一些面试题

    1,一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。
    设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。

    最直接也最清晰的做法就是排序然后两边往中间同步走,O(nlogn) + O(n)。

    不过既然相同数值不重复出现,还对空间没啥说的,那就bitmap吧。。。可以做到O(n)。太无聊了,还要揣摩出题人的思路。

    2,一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。

    请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
    注意:
    - 5个数值允许是乱序的。比如: 8 7 5 0 6
    - 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4
    - 0可以多次出现。
    不管是5个还是500个,走一遍看一下min和max,减一减就可以了。。当然附带上0的处理。

    3,正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12

    (1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项
    (2)、设计测试数据来验证函数程序在各种输入下的正确性。

    能被a整除的序列,是a的倍数,a, 2a, 3a, ...

    能被b整除的序列,是b的倍数,b, 2b, 3b, ...

    能被a或者b整除的序列,就是这两个序列的merge。。剩下的略。

    4,有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法 c语言函数原型void proc(char *str) 也可以采用你自己熟悉的语言。

    这其实是qsort中partition的一步,略。

    5,输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。

    只要先将整个句子翻转一次,然后每个单词内部再翻转一次,就行了,代码暂略。

  • 相关阅读:
    [Hibernate]
    asc.desc
    Could not obtain connection metadata
    java枚举类Enum方法简介(valueof,value,ordinal)
    maven3 手动安装本地jar到仓库
    maven命令大全
    如何正确遍历删除List中的元素,你会吗?
    Hibernate的session.createSQLQuery的几种查询方式
    Linux-github 搭建静态博客
    我所写的CNN框架 VS caffe
  • 原文地址:https://www.cnblogs.com/qsort/p/2150089.html
Copyright © 2011-2022 走看看