ARTS打卡 - 5
1. Algorithm
这次做的是一道int类型的值(正整数,范围:1~3999)转罗马数字的题。开始看到题以为只需要根据10的幂来对原始数据取模,然后根据数字的大小来得出原始的罗马数字即可,但是在实际写的过程中发现有问题。最后只能想到用一个map来把各种特定的值一一对应起来(比如:{4, “IV”}, {5, “V”}等)。但是没有想到怎么计算数字规则,后来看了解法恍然大悟:使用贪心算法:
列出两个特殊数字的数组,阿拉伯数字与罗马数字从大到小一一对应
从数组
index = 0
开始,与原数字比较,比原数字大则移动指针,比原数字小则:1
2num -= array[index];
result.append(roman[index]);
这里记录一下贪心算法的基本思想:
- 从某个初始解出发
- 采用迭代的过程,当可以向目标前进一步使,就根据局部最优策略,得到一部分解,缩小问题规模
- 将所有解综合起来。
经典的贪心算法例子:
- 找零问题
- 背包问题
- 活动选择问题
2. Review
Cool Javascript 9: Named arguments — Functions that get and return Objects
在使用js的过程中,发现不知道怎么写js的具名参数,不如kotlin那么方便。。。所以看到了这篇文章,文章说明的是ES6提供的具名参数的用法,如下:
1 | function apiRequest({ |
可以看出来,实际上是将参数用一个object的方式表示,这样的话就可以跳过其中的一些默认参数直接使用具名参数的方式,还有另一种方式,也可以跳过一些默认参数:
1 | function test(start, second='second', third='third', fourth = 'fourth') |
通过上述例子可以看到使用 Array(2)
跳过中间 2个默认参数。
3. Tip
- 如何使用node inspect debug调试mocha框架:
- 使用命令 mocha –reporter spec –inspect-brk test.js
- 升级了Android Studio 4.0 之后编译器提示:
Default Activity not found
的错误,修改了 运行方式中的Default Activity
为Specified Activity
并指定Activity,会提示 Activity not definied in AndroidManifest.xml,看了对应的AndroidManifest.xml
是声明了Activity的(没有找到原因),暂时使用了如下的解决办法:- 修改运行方式 (Editr Configuration) -> Default Activity : 修改为Nothing。(这种方式可以正常run 程序,但安装好apk之后不会启动)
4. Share
- 文章介绍了为什么使用Lambda表达式第一次使用会很慢,而之后就会非常快。(因为需要首次加载生成Lambda表达式时,需要额外加载ASM框架,需要更多时间)
- 匿名内部类在编译阶段会多出一个类,而Lambda不会,仅会生成一个函数。而且匿名内部类将会被实例化成为对象,增加内存消耗。此外,类的加载和验证也会影响程序的启动性能。