据说××商城公司 笔试题

 

1.求一个数组里面最大的K个数。

public class FindBigK {

    public static void main(String[] args) {

        int[] array = new int[] { 1, 5, -1, 8, 0, 2, 8 };// 示例数组

        int k = 3;// 设K=3

        int[] out = findK(array, k);

        for (int i = 0; i < out.length; i++) {

            System.out.println(out[i]);

        }

    }

    private static int[] findK(int[] array,int k) {

        int temp = 0;

        int charge = 0;

        int[] out = new int[k];

        for (charge = 0; charge < k; charge++) {

            int mark = charge;

            int big = array[charge];

            for (int i = charge + 1; i < array.length; i++) {

                if (big < array[i]) {

                    big = array[i];

                    mark = i;

                }

            }

            temp = array[charge];

            array[charge] = array[mark];

            array[mark] = temp;

            out[charge] = array[charge];

        }

        return out;

    }

}

结果:8,5,2

 

2.求一个数组中相加的值最大的连续序列

public class FindBigArray {

    public static void main(String[] args) {

        int[] array = new int[] { -2, 9, -3, 4, -6, 7, -6, 4 };/ /示例数组

        int sum = 0;

        int start = 0;//相加的值最大的连续序列 起始位置

        int end = 1;  //相加的值最大的连续序列 结束位置

        int newstart = 0;

        int big = 0;

        for (int i = 0; i < array.length; i++) {

            sum += array[i];

            if (sum <= 0) {

                sum = 0;

                newstart = i + 1;

            } else {

                if (sum > big) {

                    big = sum;

                    start = newstart;

                    end = i + 1;

                }

            }

        }

        for (int i = start; i < end; i++) {

            System.out.println(array[i]);

        }

    }

}

结果序列:9 ,–3, 4, -6 ,7

 

1、有12个球,11个重量相等,1个是异重球,问怎样能在天平上称三次就找出那个异重球?(异重球未知轻重)

首先,把12个小球分成三等份,每份四只。

拿出其中两份放到天平两侧称(第一次)

情况一:天平是平衡的。

那么那八个拿上去称的小球都是正常的,特殊的在四个里面。

把剩下四个小球拿出三个放到一边,另一边放三个正常的小球(第二次)

如天平平衡,特殊的是剩下那个。

如果不平衡,在天平上面的那三个里。而且知道是重了还是轻了。

剩下三个中拿两个来称,因为已经知道重轻,所以就可以知道特殊的了。(第三次)

情况二:天平倾斜。

特殊的小球在天平的那八个里面。

把重的一侧四个球记为A1A2A3A4,轻的记为B1B2B3B4。

剩下的确定为四个正常的记为C。

把A1B2B3B4放到一边,B1和三个正常的C小球放一边。(第二次)

情况一:天平平衡了。

特殊小球在A2A3A4里面,而且知道特殊小球比较重。

把A2A3称一下,就知道三个里面哪个是特殊的了。(第三次)

情况二:天平依然是A1的那边比较重。

特殊的小球在A1和B1之间。

随便拿一个和正常的称,就知道哪个特殊了。(第三次)

情况三:天平反过来,B1那边比较重了。

特殊小球在B2B3B4中间,而且知道特殊小球比较轻。

把B2B3称一下,就知道哪个是特殊的了。(第三次)

 

2、一个是飞机加油问题,很老的问题,一个飞机可以飞半个地球,飞机间可以互相加油,求让一个飞机飞整个地球最少要出动多少架飞机;

答案

答案
至少4架飞机,飞6架次
解答过程如下:
三架飞机,同时起飞
八分之一的地方,一架飞机把另外两架飞机的油加满,剩下的油正好够返航。
四分之一的地方,一架飞机把另外一架飞机的油加满,剩下的油正好够返航。
二分之一的地方,起点处停着两架刚才返航的飞机加满油后和另一架加满油的飞机反方向起飞。
八分之七的地方,一架飞机(反方向的)把另外两架飞机(反方向的)的油加满,剩下的油正好够返航。
四分之三的地方,环绕了四分之三圈地球的飞机没油了,但此时恰好和另两架飞机(反方向的)会和, 三架飞机平均分配油,每架都是1/2油,正好回到起点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值