这是一个典型的数据表比对问题。我们需要比较新旧两张配置表,找出新增、修改和删除的数据行。
游戏玩法相关的数值数据一般来说会被放在一个叫配置表的地方。
配置表样表如下:
1.today
2.is
3.good
4.day
约定:
1.第一列为主键列(id列,唯一,从上到下保持升序)
2.第二列为值列,所谓的差异比对就是比对的新旧两张表相同id行的值
游戏的每一个版本更新,策划都会对配置表中的数据进行修改以适应游戏玩法的变化,为了避免策划因人为失误导致配置表错误修改,需要对配置表每次变更内容都做审核,基于这个场景,请设计一个新旧配置表差异比对的程序,将左表(旧表)和右表(新表)进行差异比对返回两张表的新增/修改/删除行的信息。
这个程序包含了4个入参,分别对应左表(旧表)和右表(新表)的主键列和值列,第1个参数是左表的主键列表,第2个参数是左表的值列表,第3个参数是右表的主键列表,第4个参数是右表的值列表。
出参是个双层的列表,内部包含了3个列表,第1个列表是新增行id列表,第2个列表是修改行id列表,第3个列表是删除行id列表,这3个列表均按id升序排列。
输入
[1,2],["nowcoder","best"],[1,2],["newcoder","great"]
输出
[[],[2],[]]
说明
这个样例中,无数据新增,所以返回值第一个列表是空,id=2的数据行被修改了,所以返回值第二个列表是[2],无数据删除,所以返回值第三个列表是空
输入
[1,2],["nowcoder","best"],[1],["newcoder"]
输出
[[],[],[2]]
说明
这个样例中,无数据新增,所以返回值第一个列表是空,无数据修改,所以返回值第二个列表是空,id=2对应数据行被删除,所以返回值第三个列表是[2]