ARTS-第6周

ARTS (第6周)

即使生活再忙碌也不能忘记学习。
即使生活再忙碌也不能思考未来。

Algorithm 算法

删除数据重复项

https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/submissions/

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

做法:

定一个一个坐标,从第2个数字开始,从前往后遍历,当前数字和前一个的数字不相同的时候,就进行重新赋值的操作,题目要求是不管重复的数据如何,并且因为这是顺序执行的,所以有用的数据不会有数据丢失的情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

public int removeDuplicates(int[] nums) {
if (nums.length == 0) {
return 0;
}
int len = 1;
for (int i = 1; i < nums.length; i++) {
// 当前数字和前一个数字不相同
if (nums[i] != nums[i - 1]) {
nums[len++] = nums[i];
}

}

return len;
}

Review 英文文章

https://hive.apache.org/ 简单的介绍了hive。

Tip 技巧

极客时间的专栏《数据结构与算法之美》

本周学习了该专栏中的15-16篇

学习了二分法以及复杂情况下的二分法。

出处:《数据结构与算法之美》(作者:王争)

https://time.geekbang.org/column/intro/126

sqlserver 递归查询

参考地址

https://blog.csdn.net/johnf_nash/article/details/78681060

使用:

1
2
3
4
5
6
7
8
9
10
11
with temp2 ( [id], [pid],[name])
as
(
select Id, pid,name
from tree_test where id ='7'
UNION ALL
--如果union后的数据有查到结果 还会将这些结果当作条件 在继续进行下一次查询
(SELECT a.[id], a.[pid],a.[name] from tree_test as a inner join
temp2 as b on a.id=b.pid )
)
SELECT * FROM temp2 ;

表结构为一个简单的树结构,有id,name,pid三个字段,pid为父ID,id为主键,name为名字。

数据为:

id pid name
1 NULL n1
2 1 n2
3 1 n3
4 1 n4
5 2 n5
6 2 n6
7 5 n7

执行结果:

id pid name
7 5 n7
5 2 n5
2 1 n2
1 NULL n1

sqlserver链接服务器

如何使用:

https://blog.csdn.net/enweitech/article/details/80570735

链接服务器部分问题的解决方案:

https://blog.csdn.net/tao2581/article/details/7484677

Share 分享

十大经典排序算法(动图演示)

https://www.cnblogs.com/onepixel/articles/7674659.html

sql优化:

1.采用横切割纵切割适度冗余

2.减少表关联查询,避免过多的联查

3.建立索引,不过最多6个 因为索引也要占用一定的物理存储空间,而且索引也需要动态维护,索引过多就会降低增删改的速度,具体可以使用sql执行计划看看注意索引失效

4.避免在 where 子句中对有索引的字段进行运算,

5.Sql语句字段尽量大写

6.oracle外键必须加索引

7.用NOT EXISTS 或者(外连接+判断为空)替换 NOT IN 操作符

8.通过rowid删除重复记录

9.大数据量的模糊匹配时可以考虑使用solr或者es