zoukankan      html  css  js  c++  java
  • 校招季笔试---亚马逊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 第三题

  • 相关阅读:
    js与asp.net后台交互
    Asp.net封装js的类
    RegisterClientScriptBlock 与 RegisterStartupScript 的区别
    Page.ClientScript.RegisterStartupScript()
    错误与修复:ASP.NET无法检测IE10,导致_doPostBack未定义JavaScript错误,恒处于FF5卷动条位置
    JS数组的操作
    拉里·埃里森和历史上最牛的演讲【转】
    SSIS 学习(9):包部署常见问题汇总【转】
    SSIS 学习(8):事务【转】
    SSIS 学习(7):包配置(下)【转】
  • 原文地址:https://www.cnblogs.com/HaifengCai/p/4015724.html
Copyright © 2011-2022 走看看