校招季笔试---亚马逊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 第三题