写点什么

ARTS 打卡 第 12 周

用户头像
引花眠
关注
发布于: 2020 年 08 月 16 日

ARTS简介

Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。

Algorithm

力扣(LeetCode)40. 组合总和II

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。

说明:

所有数字(包括目标数)都是正整数。

解集不能包含重复的组合。

示例 1:
输入: candidates = [10,1,2,7,6,1,5], target = 8,
所求解集为:
[
[1, 7],
[1, 2, 5],
[2, 6],
[1, 1, 6]
]


示例 2:
输入: candidates = [2,5,2,1,2], target = 5,
所求解集为:
[
[1,2,2],
[5]
]



解题思路:

  1. 这道题与39题的思路一致,需要注意的是39题同一个数字可以重复多次,而本题只能使用一次,所以需要去除重复的,而且递归查找的时候,下一个序号应该是i+1,而不是i

class Solution {
public List<List<Integer>> combinationSum2(int[] candidates, int target) {
List<List<Integer>> res = new ArrayList<>();
int len = candidates.length;
// 排序是为了提前终止搜索
Arrays.sort(candidates);
backtrace(candidates, len, target, 0, new LinkedList<>(), res);
return res;
}
private void backtrace(int[] candidates, int len, int subTarget, int begin, LinkedList<Integer> path,
List<List<Integer>> res) {
if (subTarget == 0) {
res.add(new ArrayList<>(path));
return;
}
for (int i = begin; i < len; i++) {
// 在数组有序的前提下,剪枝
if (subTarget - candidates[i] < 0) {
break;
}
if (i > begin && candidates[i] == candidates[i - 1]){
continue; //去掉重复的
}
path.addLast(candidates[i]);
backtrace(candidates, len, subTarget - candidates[i], i+1, path, res);
path.removeLast();
}
}
}

Review

学习-微服务架构模式系列,网站地址是:https://microservices.io

微服务架构-Pattern: Domain event

这篇文章的主要介绍了微服务架构下如何进行发布数据更新:领域事件

问题:当服务中数据改变时如何发布事件

解决方法,领域事件模式:

  1. 将业务逻辑组合成DDD中聚合,当聚合改变或创建时发布事件

ps:《微服务架构设计模式》

Tips

记录我对于Linux的学习,文件相关的命令:

ps:”~” 表示为 home 目录,”.” 则是表示目前所在的目录,”..” 则表示当前目录的上一层目录

-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数

对比文件

diff 以逐行的方式,比较文本文件的异同处

格式: diff [选项] 源文件 目标文件

diff选项有很多,可以访问如下路径查看diff中文文档

有两个文件,a.txt如下

a
b
c
d

d
c
b
a


b.txt如下:

1.a
2.d
3.c
4.b
5.
6.d
7.f
8.f
9.b
10.a


当使用diff a.txt b.txt时,输出如下结果:

2,3d1
< b
< c
4a3,4
> c
> b
7c7,8
< c
---
> f
> f


现在让我们来解释一下该输出的结果

首先介绍一些概念:

  1. 变动位置 由三部分组成:行号[adc]行号

  2. < > 分别表示源文件和目标文件

  3. — 用来分割两个文件

所以

2,3d1 #源文件中删除第2,3行
< b
< c
4a3,4 #将以下行增加到目标文件中的第3,4行
> c
> b
7c7,8 #件源文件中的第7行删除,---下表示增加将以下行增加到目标文件中的第7,8行
< c
---
> f
> f


cmp 按字节比较两个文件是否有差异。当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号

格式: cmp [选项]… 文件1 文件2

  1. -c或–print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。

  2. -i<字符数目>或–ignore-initial=<字符数目>  指定一个数目。

  3. -l或–verbose  标示出所有不一样的地方。

  4. -s或–quiet或–silent  不显示错误信息。

  5. -v或–version  显示版本信息。

  6. –help  在线帮助。

1.cmp aa.txt bb.txt
2.aa.txt bb.txt 不同:第 3 字节,第 2 行


Share

分享最近对计算机基础的复习,这次分享的是如何选择:Bootstrap Or Layui,可能会有不足之处,之后会根据理解继续修改。



发布于: 2020 年 08 月 16 日阅读数: 52
用户头像

引花眠

关注

还未添加个人签名 2018.06.11 加入

还未添加个人简介

评论

发布
暂无评论
ARTS打卡 第12周