几个论坛上看到的2015小米笔试题

一、

题目描写叙述

 大家对回文串不陌生吧?一个字符串从前看和从后看假设一样的话。就是回文串。比方“上海自来水来自海上”就是一个回文串。

如今我们的问题来了。把一个数字看成字符串,问它是不是一个回文数?时间复杂度和空间复杂度越低的算法,得分越高。
c++:
     bool isPalindromeNumber(long num);
java:
     boolean isPalindromeNumber(long num);



解题思路

1、将long转换为字符串。从头和尾向中间扫描就可以
2、每次取出头尾的数字,比較,然后去掉头尾
3、取出每一位放入栈中,再弹出组成一个新数。和原数比較

二、

题目描写叙述

求两个多项式的乘积
     pa=an*x^n + an-1*x^(n-1) + ... + a1*x + a0;
     pb=bm*x^n + bm-1*x^(n-1) + ... + b1*x + b0;
当中,an,an-1...a1,a0,bm,bm-1...b1,b0都是整数,范围是[-1000,1000],0<=n,m<=1000。pa*pb的结果也是多项式。请你设计怎样表示一个多项式,并写出两个多项式相乘的程序。


c++:
     string multiplyPloynomial(const string&pA,const string&pB);
java:
     String multiplyPloynomial(String pA,String pB);
当中pA和pB的格式都是“(-3,5),(87,4),(93,3),(3,0)”。表示一个多项式为-3*x^5 + 87*x^4 + 93*x^3 + 3。

输入都是合法的。除了数字,左右括号和逗号没有别的不论什么字符。而且幂次都是从高到低排列的,输出也要求是这种标准格式。

解题思路


採用链表来表示多项式,由于假设用数组有可能遇到稀疏问题。同一时候链表能够动态加入节点。

相乘时,採用hashmap来保存两两相乘的结果,最后在扫描一遍hashmap就可以构造出多项式

三、



这题应该是关于图的。偷懒了~~~图不怎么会
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值