我们常见的一些主要的数据结构比方整型int或者浮点型float由于位数过多无法用内置类型存储,这时候我们就须要自己实现高精度的数据类型来进行存储和运算。这样的问题在实际产品中还是比較有用的,所以相对来说也是面试中的常客。LeetCode中关于高精度的题目有下面几道:
Add Binary
Add Two Numbers
Plus One
Multiply Strings

Add BinaryAdd Two Numbers是同一类型的题目,都是高精度中的加法运算,仅仅是一个是二进制的,一个是十进制的,事实上进制是无所谓的,代码基本能够统一起来用一种思路来实现。思路也非常easy,就是从低位開始相加,一直维护进位就能够了。属于考察非常主要的数组操作,没有什么算法难度,主要看看coding实现能力。

Plus One也是一道常见的题目,他事实上就是实现C++中++的运算符,由于仅仅须要+1,所以事实上比上面的题目更加简单。这道题的小陷阱就是它是用数组从高位到低位进行存储的,所以假设出现进位,那么须要又一次分配空间,并给最高位赋1,其它位赋0就可以。这里恰好引入一个点,就是高精度存储应该低位到高位存储还是反过来好,这也是面试中可能问到的问题。

Multiply Strings这道题是高精度的乘法运算,属于比較复杂的,须要对每一位的结果分别计算累加,当中的细节有点多,这里就不细说了,个人觉得实现有点复杂,并非非常适合在面试中出现。

尽管说题目不多,可是这类题目的出现率却是非常高的,主要原因倒不是这样的题目本身有非常多的考点,而是它们特别好扩展,基本上来说问到这样的题目,首先是考察一下coding能力,一般来说都是这样的加减乘除的运算,接下来一定会是关于数据结构(或者说面向对象)的设计。这些题目的本身都是为高精度BigInteger服务的,面试官会问一些关于这个数据结构设计的问题,比方说假设让你来设计这个类,用什么数据结构来存(比方数组还是链表,各有什么利弊),须要哪些接口(构造函数,加减乘除运算等等),还有比方要设计构造函数,须要什么接口的构造函数(这里赋值构造函数,赋值运算符这些肯定是须要的,可是要注意必须提供对于常规类型比方int,long这些的接口,一个好的高精度类肯定是要对照它更弱的数据结构进行兼容的)。
上面我列举了一些可能在面试中会被继续考查的问题,也是一部分联想,像这样的设计问题能够问得还是比較多的,也是非经常见的,大家能够自己多进行这样的问题的准备和联想哈。

LeetCode总结 -- 高精度篇的更多相关文章

  1. c++ LeetCode (初级字符串篇) 九道算法例题代码详解(二)

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11089327.html 已经刷了很多篇leetcode题了,不过最近在找c++的实习工作(大佬 ...

  2. Leetcode模拟题篇

    43. Multiply Strings 高精度非负整数的乘法. string multiply(string num1, string num2) { '); ; <= i; --i) { ; ...

  3. 【持续更新】leetcode算法-数组篇

    会在近期陆续地完成数组篇的整理,希望对找工作的小伙伴有所帮助.   1.Two Sum:两数相加为一固定值,求其下标.一次遍历数组,用一个hash表存储已经访问过的数及其下标,对于新访问的数value ...

  4. LeetCode之Easy篇 ——(7)Reverse Integer

    7.Reverse Integer Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: Out ...

  5. LeetCode之Easy篇 ——(1)Two Sum

    1.Two Sum Given an array of integers, return indices of the two numbers such that they add up to a s ...

  6. LeetCode刷题总结-数组篇(上)

    数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...

  7. LeetCode 73,为什么第一反应想到的解法很有可能是个坑?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第42篇文章,我们来看看LeetCode第73题矩阵置零,set matrix zeroes. 这题的难度是Mediu ...

  8. LeetCode 74,直击BAT经典面试题

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题43篇文章,我们今天来看一下LeetCode当中的74题,搜索二维矩阵,search 2D Matrix. 这题的 ...

  9. LeetCode 77,组合挑战,你能想出不用递归的解法吗?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第46篇文章,我们一起来LeetCode中的77题,Combinations(组合). 这个题目可以说是很精辟了,仅仅 ...

随机推荐

  1. docker 创建镜像

    docker:/root# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official bui ...

  2. MYSQL 简单的循环存储过程

    BEGIN ; ; DO DO ); ; ) THEN ; END IF; END WHILE; ; ; END WHILE; END

  3. python cmd 模块

    command模块用于执行以字符串形式指定的简单系统命令,并将其输出以字符串形式返回.此模块尽在unix系统上有效.这个模型提供的功能与在unix shell脚本使用的反引号(就是~这个键下的那个反引 ...

  4. SEO人员应该突破的5大思想误区

    1.外链误区 很多人在做网站优化的时候容易陷入外链怪圈,认为外链就是网站优化的一切,只要做好外链排名就会上去,让他不做外链了他将不知道做什么.特别是外链专员和一些初级SEO人员,优化网站只知道到哪里发 ...

  5. HTML5全屏API

    现在大多数浏览器都有全屏功能,允许用户来设置或操作.但HTML5的全屏API与之不同,HTML5的全屏API允许web开发工程师在程序中调用. 这样,web开发工程师就可以再网站中设计一个按钮,当该按 ...

  6. HashMap 的遍历key与value的方法

    HashMap最经常使用的使用方法是依据key增删改查value,有时候会须要知道一个HashMap有多少个keys以及这些keys都是什么,能够用以下的代码实现. 方法1: Map map = ne ...

  7. openstack之horizon源码分析之二

    一.概述: django基础入手: django新建project:#django-admin startproject mysite 生成如下目录: mysite ├── manage.py └── ...

  8. javascript高级知识点——闭包

    代码信息来自于http://ejohn.org/apps/learn/. 先给出一个权威的定义,函数对象可以通过作用域相互关联起来,函数体内的变量可以保存在函数的作用域内,这种特性称为闭包. 在闭包内 ...

  9. 【转】sun.misc.BASE64Encoder找不到jar包的解决方法

    只需要在project build path中先移除JRE System Library,再添加库JRE System Library,重新编译后就一切正常了.(太神奇了,转自http://blog. ...

  10. Unity3D使用mesh创建一个正方形

    using UnityEngine; using System.Collections; public class Quad : MonoBehaviour { // Use this for ini ...