首页 > 代码库 > 校招季笔试---亚马逊2014笔试题(1/4)

校招季笔试---亚马逊2014笔试题(1/4)

校招季笔试---亚马逊2014笔试题(1/4)

1.前言:

去年入学今年就得校招找工作,时间匆匆。最近一直都是各种宣讲笔试。被虐的各种惨不忍睹啊!

分享昨天亚马逊在线笔试题题。水平有限放在这里全当留着纪念吧!

 

2.且看题目:

2.1 第一题

  

我的解题思路:

 1. 比较一组序列首先处理号序列每个元素,2-A 数字int类型实现icompare接口是可以直接比较大小,所以把J-A转换成int类型依次赋值11-15。

 2. 定义一个数据机结构CardRanking 有两个属性Type(int)和NumberArray(List<int>),主要通过CardRanking实现IComparable<CardRanking>

Code:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Amazon{    //定义一个数据结构:正确拿牌后每个人的手牌情况,实现ICompable 接口实现比较手牌方法    class CardRanking : IComparable<CardRanking>    {        //T1:6        //T2:5        //T3:4        //T4:3        //T5:2        //T6:1        public int Type { get; set; }        public List<int> NumberArray { get; set; }        //构成函数赋值        public CardRanking(List<int> array)        {            this.NumberArray = array;            this.Type = GetType(array);        }        //获取手牌的类型        private int GetType(List<int> array)        {            Dictionary<int, int> tmp = new Dictionary<int, int>();            foreach (int card in array)            {                if (!tmp.ContainsKey(card))                {                    tmp.Add(card, 0);                }                else                {                    tmp[card]++;                }            }            if (tmp.Count == 1)            {                return 6;            }            if (tmp.Count == 4)            {                int w = tmp.Values.ToArray()[0];                if ((tmp.Values.ToArray()[0] - 3).CompareTo(tmp.Values.ToArray()[3]) == 0 &&                    (tmp.Values.ToArray()[1] - 2).CompareTo(tmp.Values.ToArray()[3]) == 0 &&                    (tmp.Values.ToArray()[2] - 1).CompareTo(tmp.Values.ToArray()[3]) == 0)                {                    return 5;                }                else                {                    return 1;                }            }            if (tmp.Count == 2)            {                foreach (var item in tmp.Values)                {                    if (item.CompareTo(2) == 0)                        return 4;                    else                        return 3;                }            }            if (tmp.Count == 3)            {                return 2;            }            return -2;        }        //实现接口的比较方法        public int CompareTo(CardRanking other)        {            if (this.Type.CompareTo(other.Type) != 0)                return this.Type.CompareTo(other.Type);            switch (this.Type)            {                case 6:                    return this.NumberArray[0].CompareTo(other.NumberArray[0]);                case 5:                    return this.NumberArray[0].CompareTo(other.NumberArray[0]);                case 4:                    if (this.NumberArray[0].CompareTo(other.NumberArray[0]) == 0)                        return this.NumberArray[3].CompareTo(other.NumberArray[3]);                    else                        return this.NumberArray[0].CompareTo(other.NumberArray[0]);                case 3:                    if (this.NumberArray[0].CompareTo(other.NumberArray[0]) == 0)                        return this.NumberArray[3].CompareTo(other.NumberArray[3]);                    else                        return this.NumberArray[0].CompareTo(other.NumberArray[0]);                case 2:                    if (this.NumberArray[0].CompareTo(other.NumberArray[0]) != 0)                        return this.NumberArray[0].CompareTo(other.NumberArray[0]);                    else if (this.NumberArray[2].CompareTo(other.NumberArray[2]) != 0)                        return this.NumberArray[2].CompareTo(other.NumberArray[2]);                    else                        return this.NumberArray[3].CompareTo(other.NumberArray[3]);                case 1:                    if (this.NumberArray[0].CompareTo(other.NumberArray[0]) != 0)                        return this.NumberArray[0].CompareTo(other.NumberArray[0]);                    else if (this.NumberArray[1].CompareTo(other.NumberArray[1]) != 0)                        return this.NumberArray[1].CompareTo(other.NumberArray[1]);                    else if (this.NumberArray[2].CompareTo(other.NumberArray[2]) != 0)                        return this.NumberArray[2].CompareTo(other.NumberArray[2]);                    else                        return this.NumberArray[3].CompareTo(other.NumberArray[3]);            }            return -2;//错误情况        }    }    class Program    {        //所有正确输入牌信息        public static Dictionary<string, int> allCards = null;        static void Main(string[] args)        {            allCards = new Dictionary<string, int>(){             {"2",2},             {"3",3},             {"4",4},             {"5",5},             {"6",6},             {"7",7},             {"8",8},             {"9",9},             {"10",10},             {"J",11},             {"Q",12},             {"K",13},             {"A",14},            };            //你的手牌            List<string> yourCard = new List<string>() { "5", "2", "3", "4" };            //我的手牌            List<string> myCard = new List<string>() { "2", "3", "5", "4" };            //得到比较结果            int result = PokerHandRanking(myCard, yourCard);            switch (result.ToString())            {                case "-1":                    Console.WriteLine("You win!");                    break;                case "0":                    Console.WriteLine("We win!");                    break;                case "1":                    Console.WriteLine("I win!");                    break;                default:                    Console.WriteLine("Error!");                    break;            }        }        //比较方法        private static int PokerHandRanking(List<string> first, List<string> second)        {            List<int> firstArray;            List<int> secondArray;            if (CheckInput(first, out firstArray) || CheckInput(second, out secondArray))                return -2;            CardRanking firstOne = new CardRanking(firstArray);            CardRanking secondOne = new CardRanking(secondArray);            return firstOne.CompareTo(secondOne);        }        //参数检查和数据格式化        private static bool CheckInput(List<string> cards, out List<int> array)        {            array = new List<int>();            if (cards == null || cards.Count != 4)            {                return true;            }            for (int i = 0; i < cards.Count; i++)            {                if (!allCards.ContainsKey(cards[i]))                {                    return true;                }                else                {                    array.Add(allCards[cards[i]]);                }            }            array.Sort();            array.Reverse();            return false;        }    }}

  

2.2 第二题

2.3 第三题

校招季笔试---亚马逊2014笔试题(1/4)