同样、时间和日期计算

咱们在行使开发中,时常要跟时打交道,比如取当前光阴,获取两个时刻接触相隔的日等等,在iOS开发被同时光相关的类有如下几独:

  1. NSDate:表示一个切的时空接触
  1. NSTimeZone:时区信息
  2. NSLocale:本地化信息
  3. NSDateComponents:一个打包了切实年月日、时秒分、周、季度等之类似
  4. NSCalendar:日历类,它提供了绝大多数底日子计算接口
  5. NSDateFormatter:用来在日期及字符串之间转移

小编继之图灵听课去(4月)在座了诸多丝下之会议,发现一个点,就是不管啊技能主题的大会,人们还见面招来算法的题,小编再次深入地咀嚼到算法是那么地必不可少。现在小编就来盘点一下图灵新出版的算法书推荐给大家。

二、NSDate时间点

NSDate储存的是社会风气标准时(UTC),输出时用依据时区转换为地方时间

1、《程序员的数学》第3弹——线性代数

NSDate常用初始化方法:
/* 获取当前时间,alloc/init得到的时间也是当前时间 */
+ (instancetype)date;
/* 以当前时间为基准,获取偏移秒数的时间 */
+ (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)seconds;
/* 以1970年1月1日为基准,获取偏移秒数的时间 */
+ (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)seconds;
/* 以2001年1月1日为基准,获取偏移秒数的时间 */
+ (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds;
/* 以指定时间点为基准,获取偏移秒数的时间 */
+ (instancetype)dateWithTimeInterval:(NSTimeInterval)seconds 
                           sinceDate:(NSDate *)date;
/* 获取一个极早的时间点,0001-12-30 00:00:00 +0000 */
+ (instancetype)distantPast;
/* 获取一个极晚的时间点,4001-01-01 00:00:00 +0000 */
+ (instancetype)distantFuture;
  • 除最后之2个得到极早极晚时间的不二法门,其他艺术都有对应之init前缀方法。
  • 极早和极晚时间常用来定时器的始发跟间断
  • 摇秒数呢刚,表示比较标准时间后的光阴,偏移秒数乎因,表示比较标准时间早的年华

图片 1

NSDate常用的靶子方法:
/* 以当前NSDate对象为基准,获取偏移指定秒数后得到的新NSDate对象 */
- (instancetype)dateByAddingTimeInterval:(NSTimeInterval)seconds;
#pragma mark - 比较2个时间
/* 比较2个NSDate对象,返回较早的那个NSDate时间点对象 */
- (NSDate *)earlierDate:(NSDate *)anotherDate;
/* 比较2个NSDate对象,返回较晚的那个NSDate时间点对象 */
- (NSDate *)laterDate:(NSDate *)anotherDate;
/* 比较2个NSDate对象,返回枚举类型(相等、早于、晚于) */
- (NSComparisonResult)compare:(NSDate *)anotherDate;
#pragma mark - 获取相隔秒数,从参数时间开始,经过多少秒到达对象执行时间
/* 返回当前对象时间与1970年1月1日00:00:00的相隔秒数 */
- (NSTimeInterval)timeIntervalSince1970;
/* 返回当前对象时间与2001年1月1日00:00:00的相隔秒数 */
- (NSTimeInterval)timeIntervalSinceReferenceDate;
/* 返回当前对象时间与当前客户端时间的相隔秒数 */
- (NSTimeInterval)timeIntervalSinceNow;
/* 返回当前对象时间与指定时间的相隔秒数 */
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;

作者:[日] 平岡和幸,[日] 堀玄

下面是应用实例:
/* 获取当前客户端时间 */
NSDate *date1 = [NSDate date];
/* 获取比date1晚30秒的时间 */
NSDate *date2 = [NSDate dateWithTimeInterval:30 sinceDate:date1];
/* 比较2个时间,获取较早的时间和较晚的时间 */
NSDate *earlierDate = [date1 earlierDate:date2];
NSDate *laterDate   = [date1 laterDate:date2];
NSLog(@"earlierDate:%@,laterDate:%@",earlierDate,laterDate);
/* 比较2个时间 */
NSComparisonResult result = [date1 compare:date2];
switch(result){
    case NSOrderedSame:
        NSLog(@"对象时间等于参数时间");
        break;
    case NSOrderedAscending:
        NSLog(@"对象时间早于参数时间");
        break;
    case NSOrderedDescending:
        NSLog(@"对象时间晚于参数时间");
        break;
}
/* 获取相隔时间秒数,将返回结果-30,从date2的时间开始,倒退30秒到达date1的时间 */
NSTimeInterval seconds = [date1 timeIntervalSinceDate:date2];
NSLog(@"date1与date2相隔%@秒",seconds);

译者:卢晓南

三、NSTimeZone时区

定价:79

NSTimeZone常用初始化方法:
/* 根据时区名称初始化,例如:America/Chicago(美国芝加哥) */
+ (instancetype)timeZoneWithName:(NSString *)aTimeZoneName;
/* 根据时区缩写初始化,例如:EST(美国东部标准时间)、HKT(香港标准时间) */
+ (instancetype)timeZoneWithAbbreviation:(NSString *)abbreviation;
/* 返回系统时区 */
+ (NSTimeZone *)systemTimeZone;
/* 返回本地时区 */
+ (NSTimeZone *)localTimeZone;
  • 时区名称可以透过以下方式赢得:
/* 以数组形式返回所有已知的时区名称 */
+(NSArray *)knownTimeZoneNames;
  • 地面时区和系时区的分在于地方时区可以被改,而网时区不可知改改

页数:384

NSTimeZone常用对象方法:
/* 获取时区名称 */
- (NSString *)name;
/* 获取时区缩写 */
- (NSString *)abbreviation;
/* 获取对象时区与零时区的间隔秒数 */
- (NSInteger)secondsFromGMT;

● 机器学习、数据挖掘、模式识别必备基础知识

季、NSLocale本地化信息

NSLocale恍如归本地化信息,主要体现在语言区域格式立刻简单只装项。

● 从入门到应用,透彻理解线性代数的面目

NSLocale常用初始化方法:
/* 返回系统初始本地化信息 */
+(instancetype)systemLocale;
/* 返回当前客户端的本地化信息,即使修改了本地化设定,这个对象也不会改变 */
+(instancetype)currentLocale;
/* 返回当前客户端的本地化信息,当每次修改本地化设定,其实例化的对象会随之改变 */
+(instancetype)autoupdatingCurrentLocale;
/* 用标示符初始化本地化信息,例如:en_US */
-(instancetype)initWithLocaleIdentifier:(NSString *)string;

《程序员的数学3:线性代数》传“程序员的数学”系列平易近人的作风,用浅显的言语与具体的图纸深入教了编程中所急需的线性代数知识。内容包括向量、矩阵、行列式、秩、逆矩阵、线性方程、LU分解、特征值、对角化、Jordan标准型、特征值算法等。

NSLocale常用对象方法:
/* 根据不同的key返回各种本地化信息 */
- (id)objectForKey:(id)key;
/* 显示特定地区代号下相应键的显示名称 */
- (NSString *)displayNameForKey:(id)key 
                          value:(id)value;

“程序员的数学”系列还有《程序员的数学》和《程序员的数学2:概率统计》,可以点击书名查看试读。

以下是采取实例:
//获取系统本地化信息
NSLocale *sysLocale = [NSLocale systemLocale];
//获取客户端本地化信息,不可响应修改
NSLocale *curLocale = [NSLocale currentLocale];
//获取客户端本地化信息,可动态响应修改
NSLocale *autoCurLocale = [NSLocale autoupdatingCurrentLocale];
//通过标识创建自定义本地化信息
NSLocale *userLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
//获取货币符号
NSString *strSymbol = [userLocale objectForKey:NSLocaleCurrencySymbol];
NSLog(@"货币符号:%@",strSymbol);//打印:¥
//获取本地日历
NSCalendar *calendar = [userLocale objectForKey:NSLocaleCalendar];
NSLog(@"本地日历:%@",calendar);
//得到"en_US"的NSLocaleIdentifier键的显示名称
NSString *str = [userLocale displayNameForKey:NSLocaleIdentifier value:@"en_US"];
NSLog(@"标识显示名称:%@",str);//打印:英文(美国)

2、自学复杂算法的大好教材——《算法基础》

五、NSDateComponents时间封装

NSDateComponents打包了现实年月日、时秒分、周、季度等:

/* 创建一个日期对象 */
NSDateComponents*compt = [[NSDateComponents alloc] init];
[compt setEra:1];//纪元
[compt setYear:2013];//年
[compt setMonth:3];//月
[compt setDay:15];//日
[compt setHour:11];//小时
[compt setMinute:20];//分钟
[compt setSecond:55];//秒钟
[compt setQuarter:2];//几刻钟
[compt setTimeZone:[NSTimeZone systemTimeZone]];//时区
[compt setWeek:3];//一年的第几周
[compt setWeekday:4];//周几
[compt setWeekOfMonth:3];//一个月的第几周
[compt setWeekOfYear:3];//一年的第几周
[compt setCalendar:[NSCalendar currentCalendar]];//日历

NSDateComponents通常不单独使用,它时时同时间接触NSDate、日历类NSCalendar同台行使

图片 2

六、NSCalendar日历类

NSCalendar恍如,表示日历,封装了大量的计算日期方法

作者:[美] Richard Neapolitan

NSCalendar常用创建方法:
/* 返回客户端的逻辑日历,即使修改了系统日历设定,这个对象也不会改变 */
+(instancetype)currentCalendar;
/* 返回客户端的逻辑日历,修改了系统日历设定,这个对象会随之改变 */
+(instancetype)autoupdatingCurrentCalendar;
/* 根据提供的日历标示符初始化 */
-(instancetype)initWithCalendarIdentifier:(NSString *)string;

译者:贾洪峰

系统受到定义之日历标识符有:
  • NSGregorianCalendar:公历
  • NSBuddhistCalendar:佛教日历
  • NSChineseCalendar:中国农历
  • NSHebrewCalendar:希伯来日历
  • NSIslamicCalendar:伊斯兰历
  • NSIslamicCivilCalendar:伊斯兰教日历
  • NSJapaneseCalendar:日本日历
  • NSRepublicOfChinaCalendar:中华民国日历(台湾)
  • NSPersianCalendar:波斯历
  • NSIndianCalendar:印度日历
  • NSISO8601Calendar:ISO8601日历

页数:408

NSCalendar常用的和NSDateComponents相关对象方法:
/* 
  取得一个NSDate对象的1个或多个部分转为NSDateComponents,
  只有明确指定了unitFlags,NSDateComponents相应的那一部分才有值
 */
- (NSDateComponents *)components:(NSUInteger)unitFlags 
                        fromDate:(NSDate *)date;
/* 取得两个NSDate对象的时间间隔,用NSDateComponents来封装 */
- (NSDateComponents *)components:(NSUInteger)unitFlags 
                        fromDate:(NSDate *)startingDate 
                          toDate:(NSDate*)resultDate 
                         options:(NSUInteger)opts;/* 一般默认传0即可 */
/* 根据NSDateComponents对象得到一个NSDate对象 */
- (NSDate *)dateFromComponents:(NSDateComponents *)comps;
/* 在参数date基础上,增加一个NSDateComponents类型的时间增量 */
- (NSDate *)dateByAddingComponents:(NSDateComponents *)comps 
                            toDate:(NSDate *)date 
                           options:(NSUInteger)opts;/* 一般默认传0即可 */

unitFlags参数经下的日历单位NSCalendarUnit据此要运算“|”重组以

定价:99

日历单位NSCalendarUnit,可以据此要运算“|”组合使用:
  • NSEraCalendarUnit
    世单位。对于NSGregorianCalendar(公历)来说,只有公元前(BC)和公元(AD);而于其它历法可能出无数,例如日本及历是以各级一代君王统治来举行计算。
  • NSYearCalendarUnit:年单位。值大非常,相当给更了不怎么年,未来微年。
  • NSMonthCalendarUnit:月单位。范围为1-12
  • NSDayCalendarUnit:天单位。范围为1-31
  • NSHourCalendarUnit:小时单位。范围为0-24
  • NSMinuteCalendarUnit:分钟单位。范围也0-60
  • NSSecondCalendarUnit:秒单位。范围为0-60
  • NSWeekCalendarUnit:周单位。范围为1-53
  • NSWeekdayCalendarUnit:星期单位,每周的7龙。范围为1-7
  • NSWeekdayOrdinalCalendarUnit:没了弄明白
  • NSQuarterCalendarUnit:几刻钟,也就是15分钟。范围为1-4
  • NSWeekOfMonthCalendarUnit:月包含的周数。最多为6个圆满
  • NSWeekOfYearCalendarUnit:年包含的周数。最多吧53独到
  • NSYearForWeekOfYearCalendarUnit:没完全将懂
  • NSTimeZoneCalendarUnit:没全弄懂

● 使用C++和Java伪代码而非是真正的代码,帮助读者了解复杂算法

以下是采取实例:
//获取客户端逻辑日历
NSCalendar *calendar = [NSCalendar currentCalendar];
//获取当前时间
NSDate *date = [NSDate date];
//从date中读取年月日,存储在NSDateComponents对象中
NSDateComponents *compt1 = [calendar components:(NSYearCalendarUnit | 
                                                 NSMonthCalendarUnit | 
                                                 NSDayCalendarUnit) 
                                       fromDate:date];

NSLog(@"年:%d",[compt1 year]);//2016
NSLog(@"月:%d",[compt1 month]);//4
NSLog(@"日:%d",[compt1 day]);//19
/*********************************************************************/
//创建一个时间相差5小时1分15秒的时间点
NSDate *date2 = [NSDate dateWithTimeInterval:5*60*60+1*60+15 
                                   sinceDate:date];
//时间间隔NSDate转NSDateComponents,分钟加秒钟
NSDateComponents *compt2 = [calendar components:(NSMinuteCalendarUnit | 
                                                 NSSecondCalendarUnit) 
                                       fromDate:date 
                                         toDate:date2 
                                        options:0];

NSLog(@"时间间隔【分种加秒钟】:%d分%d秒",[compt2 minute],[compt2 second]);//301分15秒
//时间间隔NSDate转NSDateComponents,只有秒钟
NSDateComponents *compt3 = [calendar components:NSSecondCalendarUnit
                                       fromDate:date 
                                         toDate:date2 
                                        options:0];
NSLog(@"时间间隔【秒数】:%d秒",[compt3 second]);//18075秒
/*********************************************************************/
//创建自定义NSDateComponents对象
NSDateComponents *compt4 = [[NSDateComponents alloc] init];
[compt4 setYear:2012];
[compt4 setMonth:5];
[compt4 setDay:11];
//NSDateComponents对象转NSDate对象
NSDate *newDate = [calendar dateFromComponents:compt4];
//得到本地时间,避免时区问题
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate:newDate];
NSDate *localeDate = [newDate dateByAddingTimeInterval:interval];
NSLog(@"NSDateComponents对象转NSDate对象:%@",localeDate);
/*********************************************************************/
//创建自定义NSDateComponents对象
NSDateComponents *compt5 = [[NSDateComponents alloc] init];
[compt5 setDay:25];
[compt5 setHour:4];
[compt5 setMinute:66];
NSDate *addDate = [calendar dateByAddingComponents:compt5 
                                            toDate:[NSDate date] 
                                           options:0];
//得到本地时间,避免时区问题
NSTimeZone *zone2 = [NSTimeZone systemTimeZone];
NSInteger interval2 = [zone2 secondsFromGMTForDate:addDate];
NSDate *localeDate2 = [addDate dateByAddingTimeInterval:interval2];
NSLog(@"NSDate对象追加NSDateComponents对象时间:%@",localeDate2);

● 不欲微积分背景知识

NSCalendar类还有一些日历设置和计算的艺术:
/* 设置本地化信息 */
- (void)setLocale:(NSLocale *)locale;
/* 设置时区信息 */
- (void)setTimeZone:(NSTimeZone *)tz;
/* 设置每周的第一天是从星期几开始,1表示是星期天(默认),2表示星期一,以此类推 */
- (void)setFirstWeekday:(NSUInteger)weekday;
/* 设置每年及每月第一周必须包含的最少天数,比如:设定第一周最少包括3天,则value传入3 */
- (void)setMinimumDaysInFirstWeek:(NSUInteger)value;
/* 获取一个小的单位在一个大的单位里面的序数 */
- (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller 
                        inUnit:(NSCalendarUnit)larger 
                       forDate:(NSDate *)date;
/* 根据参数提供的时间点,得到一个小的单位在一个大的单位里面的取值范围 */
- (NSRange)rangeOfUnit:(NSCalendarUnit)smaller 
                inUnit:(NSCalendarUnit)larger 
               forDate:(NSDate *)date;
/* 
  根据参数提供的时间点,返回所在日历单位的开始时间。
  如果startDate和interval都计算得出来,则返回YES;否则返回NO
 */
- (BOOL)rangeOfUnit:(NSCalendarUnit)unit  /* 日历单位 */
          startDate:(NSDate **)datep /* 开始时间,通过参数返回 */
           interval:(NSTimeInterval *)tip /* 日历单位所对应的秒数,通过参数返回 */
            forDate:(NSDate *)date; /* 时间点参数 */

● 提供了大气示范,帮助读者了解以及左右理论概念

七、NSDateFormatter字符串格式化

NSDateFormatter特意负责时间NSDate以及字符串NSString中间的更换

● 海外高校普遍使用的算法教材之一

脚是格式化符使用规定:
  • 大写G:纪元
    貌似会显得公元前(BC)和公元(AD)
  • 小写y:年
    假如是2013年,那么yyyy=2013,yy=13
  • 大写M:月
    假如是3月,那么M=3,MM=03,MMM=Mar,MMMM=March
    假如是11月,那么M=11,MM=11,MMM=Nov,MMMM=November
  • 小写w:年包含的周到
    若是1月8日,那么w=2(这同样年之次独到)
  • 大写W:月份带有的两全(与日历排列有关)
    苟是2013年4月21日,那么W=4(这个月的季独全面)
  • 大写F:月份带有的一揽子(与日历排列无关)
    跟点的W不一致,F只是只以7上呢一个单位来统计到,例如7号一定是率先只到,15声泪俱下一定是第三个健全,与日历排列无关。
  • 大写D:年包含的命运
    假如是1月20日,那么D=20(这同年之第20龙)
    假使是2月25日,那么D=31+25=56(这等同年的第56龙)
  • 小写d:月份带有的天数
    假如是5号,那么d=5,dd=05
    假如是15号,那么d=15,dd=15
  • 大写E:星期
    倘是星期五,那么E=Fri,EEEE=Friday
  • 小写a:上午(AM)/下午(PM)
  • 大写H:24小时制,显示为0–23
    万一是午夜00:40,那么H=0:40,HH=00:40
  • 小写h:12小时制,显示为1–12
    若是午夜00:40,那么h=12:40
  • 大写K:12小时制,显示为0–11
    要是午夜00:40,那么K=0:40,KK=00:40
  • 小写k:24小时制,显示为1–24
    而是午夜00:40,那么k=24:40
  • 小写m:分钟
    假如是5分钟,那么m=5,mm=05
    假如是45分钟,那么m=45,mm=45
  • 小写s:秒
    假如是5秒钟,那么s=5,ss=05
    假如是45秒钟,那么s=45,ss=45
  • 大写S:毫秒
    一般用SSS来显示
  • 小写z:时区
    表现形式为GMT+08:00
  • 大写Z:时区
    表现形式为+0800

《算法基础》对算法设计、算法的复杂度分析及测算复杂度进行了方便的牵线。各种抽象的数学概念,既浅显易懂,又非去谨慎。第5版新增了平等节,介绍遗传算法和遗传编程,其中提供了辩解以及执行两端的施用。此外,这无异版还针对性习和演示进行了全面更新,并且改进了导师资源。本书可看成本科生和研究生算法课程的读本,也可供应程序员和算法分析和设计人员看。

脚是利用范例:
//创建日期字符串格式化器
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//设置时区
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
//设置格式化输出格式
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
//创建时间
NSDateComponents *compt = [[NSDateComponents alloc] init];
[compt setYear:2013];
[compt setMonth:3];
[compt setDay:13];
[compt setHour:1];
[compt setMinute:55];
[compt setSecond:28];
//获取日历对象
NSCalendar *calendar = [NSCalendar currentCalendar];
//设置时区
[calendar setTimeZone:[NSTimeZone systemTimeZone]];
//NSDateComponents对象转NSDate对象
NSDate *date = [calendar dateFromComponents:compt];
NSLog(@"date:%@",date);
//格式化输出字符串,传入要格式化的时间NSDate对象
NSString *str = [formatter stringFromDate:date];
NSLog(@"格式化输出:%@",str);

来配图O(∩_∩)O哈哈~:

3、算法领域的藏参考书——《算法(英文版•第4版本)》

详尽介绍好参照这里,讲得稀详细:wayne23的博客

图片 3

使起什么问题可以在下方评论区中提出!O(∩_∩)O哈!

作者:[美] Robert Sedgewick,[美] Kevin Wayne

定价:129

页数:934


Sedgewick畅销著作的摩登版本,反映了通过几十年演化而成为的算法核心知识体系


在显要之正确性、工程和经贸应用环境下探索算法,给来了算法的骨子里代码,而休同类著作常用之伪代码

《算法(英文版•第4版)》到家介绍了关于算法和数据结构的画龙点睛知识,并专门对排序、搜索、图处理与字符串处理进展了阐释。第4
版具体于出了每人程序员应知应会的50 只算法,提供了实际代码,而且这些Java
代码实现利用了模块化的编程风格,读者可方便地加以改造。本书配套网站提供了本书内容的摘要和重新多的代码实现、测试数据、练习、教学课件等资源。

4、经典计算机科学巨著重装上市

图片 4

作者:[美] Donald E. Knuth

译者:李伯民,范明,蒋爱军

定价:198

页数:524

●《计算机程序设计方式》系列是公认的电脑科学领域权威的作

《计算机程序设计方式
卷1:基本算法(第3版)》讲解基本算法,其中包含了其余各卷都需用到之核心内容。本卷从基本概念开始,然后讲述信息结构,并支援以大气底练习及答案。

顿时是一致总理包含全体基础算法的宝典,是她使于了立即无异代软件开发人员关于电脑程序设计之大部分文化。

——Byte杂志1995年9月刊

倘你自以为是一个死好之程序员,请去念读高德纳的《计算机程序设计方法》吧……要是你真正管她读下去了,就必定可以为我递简历了。

——比尔•盖茨

遇上题目亟待将高德纳的编著请下书架,总是个叫人欢喜的涉。我发觉,只要翻一翻这些书,就会立竿见影地“镇住”计算机。

——Jonathan Laventhol

5、一本书玩转算法,尽享算法乐趣

图片 5

作者:王晓华

定价:79

页数:420

● CSDN超人气博主、算法专栏达人王晓华力作

● 淋漓尽致展现算法本质,广泛涵盖常用算法结构及其使用

《算法的趣》起同密密麻麻有趣之存实例出发,全面介绍了结构算法的底蕴艺术及其广泛应用,生动地展现了算法的趣味性和实用性。全书分为两只片,第一片段介绍了算法的概念、常用之算法结构和贯彻方式,第二部分介绍了算法在各个领域的运用,如物理实验、计算机图形学、数字音频处理等。其中,既出各种名牌的算法,如神经网络、遗传算法、离散傅里叶变换算法及各种插值算法,也出不起眼的排序和几率计算算法。讲解浅显易懂而非失去深度和谨慎,对程序员发格外非常之启示意义。书被存有的演示都跟在不无关系,淋漓尽致地呈现了算法解决问题之精神,让您爱上算法,乐在其中。

“如果说《啊哈!算法》是算法界的小白书,内容最少看得无过瘾,那么这按照《算法的童趣》或许可以拉动您同样于牛逼一起意外。当自己正好用到开之目的早晚,我哪怕老大想,因为毕竟发生同样依算法书可以系统地以及大伙说一样游说这些我哉甚想以及大伙说之伟大算法。”

——啊哈磊,《啊哈!算法》作者

“这本开为自家无比特别之喜怒哀乐是尚未像相似的算法书一样独自地失去讲算法和数据结构本身,那样无论语言多有意思,只要同谈到主要之题目呢会即时变换得无趣起来。作者以每一样段还推被出了一个其实的题材,然后尝试用算法去解决此问题,没有局限为通用类算法,而是又寓逻辑类算法、通用类算法和专业类算法,真正是以教练读者解决问题之能力,而解决问题的力,正是其他一样家商店所要人才的最为基本的技能。”

——黄鑫(飞林沙),极光推送首席科学家