写点什么

ARTS 打卡 Week 03

用户头像
teoking
关注
发布于: 2020 年 06 月 07 日
ARTS打卡Week 03

每周完成一个 ARTS:

Algorithm: 每周至少做一个 LeetCode 的算法题

Review: 阅读并点评至少一篇英文技术文章

Tips: 学习至少一个技术技巧

Share: 分享一篇有观点和思考的技术文章



Algorithm

LC 78 Subsets

class Solution {
int[] nums;
List<List<Integer>> answer;
List<List<Integer>> subsets(int[] nums) {
answer = new ArrayList<>();
this.nums = nums;
Stack<Integer> cur = new Stack<>();
// 求c(0, 0), c(1, 0), ..., c(n, 0),其和就是最终结果
for (int i = 0; i <= nums.length; ++i) {
dfs(i, 0, cur);
}
return answer;
}
/**
* 求从start开始,取n个元素的组合数
* @param n 需要取多少个元素
* @param start 当前取值的起始位置
* @param cur 当前取值数组
*/
private void dfs(int n, int start, Stack<Integer> cur) {
// 当前取值数组大小等于需要取元素的个数
if (cur.size() == n) {
answer.add(new ArrayList<>(cur));
return;
}
for (int i = start; i < nums.length; ++i) {
cur.push(nums[i]);
dfs(n, i + 1, cur);
cur.pop();
}
}
}

这是一个典型的combination问题,和permutation是一道非常典型的问题。需要牢固掌握。

其运行过程如下示意:

combination运行流程



Review

这周学习了AutoLayout的一个库Masonry,其教程还是很清晰的。

这个库最大的作用是将VFL转换为block代码,使得autolayout的UI开发简便了很多。



Tips

iOS的xib编辑器,在某些情况下,打开后特别卡(开发机为内存16gb,ssd 2019款的mbp),调试效率很低。目前不知道其原因。



Share

推荐从0开发一款iOS App课程。

近期因工作需要要进行iOS开发,报了这门课。推荐这门课的原因是因为,作为一个Android开发者,看了这门课后,对iOS开发有了一个快速的了解。移动端开发,大家所面临的问题是一样的,不同的是站在不同的技术体系下解决这些问题。看课程的过程中,不断有这种感觉:“哦,原来这个地方,iOS是这么解决的”。



我大概花了一周时间,填鸭式看完了其中60%内容,并照着其中例子调试通过课程附带demo程序。

之后,我就上手开始实现iOS的界面。过程总体还算顺畅的(不生产代码,只是搜索引擎搬运工)。



发布于: 2020 年 06 月 07 日阅读数: 77
用户头像

teoking

关注

Monkey plays software. 2018.11.28 加入

程序员。目前主要从事Android和iOS开发。

评论

发布
暂无评论
ARTS打卡Week 03