Merge pull request #1247 from gaoyangu/master

修改:数组系列的部分笔误,增加:数组总结篇中二维数组内容针对Java语言的限定
This commit is contained in:
程序员Carl
2022-05-12 09:23:50 +08:00
committed by GitHub
4 changed files with 10 additions and 10 deletions

View File

@ -30,7 +30,7 @@
相信很多同学刚开始做这种题目的时候,上来就是一波判断猛如虎。
结果运行的时候各种问题,然后开始各种修修补补,最后发现改了这里里有问题,改了那里这里又跑不起来了。
结果运行的时候各种问题,然后开始各种修修补补,最后发现改了这里里有问题,改了那里这里又跑不起来了。
大家还记得我们在这篇文章[数组:每次遇到二分法,都是一看就会,一写就废](https://programmercarl.com/0704.二分查找.html)中讲解了二分法,提到如果要写出正确的二分法一定要坚持**循环不变量原则**。
@ -47,7 +47,7 @@
可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,那就是**一进循环深似海从此offer是路人**。
这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开闭的原则,这样这一圈才能按照统一的规则画下来。
这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开闭的原则,这样这一圈才能按照统一的规则画下来。
那么我按照左闭右开的原则,来画一圈,大家看一下:
@ -59,7 +59,7 @@
一些同学做这道题目之所以一直写不好,代码越写越乱。
就是因为在画每一条边的时候,一会左开闭,一会左闭右闭,一会又来左闭右开,岂能不乱。
就是因为在画每一条边的时候,一会左开闭,一会左闭右闭,一会又来左闭右开,岂能不乱。
代码如下已经详细注释了每一步的目的可以看出while循环里判断的情况是很多的代码里处理的原则也是统一的左闭右开。

View File

@ -112,7 +112,7 @@ public:
**一些录友会疑惑为什么时间复杂度是O(n)**
不要以为for里放一个while就以为是O(n^2)啊, 主要是看每一个元素被操作的次数,每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被操作两次,所以时间复杂度是 2 × n 也就是O(n)。
不要以为for里放一个while就以为是O(n^2)啊, 主要是看每一个元素被操作的次数,每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被操作两次,所以时间复杂度是 2 × n 也就是O(n)。
## 相关题目推荐

View File

@ -43,19 +43,19 @@
**那么二维数组在内存的空间地址是连续的么?**
我们来举一个例子,例如: `int[][] rating = new int[3][4];` 这个二维数在内存空间可不是一个 `3*4` 的连续地址空间
我们来举一个Java的例子,例如: `int[][] rating = new int[3][4];` 这个二维数在内存空间可不是一个 `3*4` 的连续地址空间
看了下图,就应该明白了:
<img src='https://code-thinking.cdn.bcebos.com/pics/%E7%AE%97%E6%B3%95%E9%80%9A%E5%85%B3%E6%95%B0%E7%BB%843.png' width=600> </img></div>
所以**二维数在内存中不是 `3*4` 的连续地址空间,而是四条连续的地址空间组成!**
所以**Java的二维数在内存中不是 `3*4` 的连续地址空间,而是四条连续的地址空间组成!**
# 数组的经典题目
在面试中,数组是必考的基础数据结构。
其实数的题目在思想上一般比较简单的,但是如果想高效,并不容易。
其实数的题目在思想上一般比较简单的,但是如果想高效,并不容易。
我们之前一共讲解了四道经典数组题目,每一道题目都代表一个类型,一种思想。
@ -115,7 +115,7 @@
在这道题目中,我们再一次介绍到了**循环不变量原则**,其实这也是写程序中的重要原则。
相信大家遇到过这种情况: 感觉题目的边界调节超多,一波接着一波的判断,找边界,了东墙补西墙,好不容易运行通过了,代码写的十分冗余,毫无章法,其实**真正解决题目的代码都是简洁的,或者有原则性的**,大家可以在这道题目中体会到这一点。
相信大家遇到过这种情况: 感觉题目的边界调节超多,一波接着一波的判断,找边界,了东墙补西墙,好不容易运行通过了,代码写的十分冗余,毫无章法,其实**真正解决题目的代码都是简洁的,或者有原则性的**,大家可以在这道题目中体会到这一点。
# 总结

View File

@ -24,7 +24,7 @@
## 双链表
单链表中的节点只能指向节点的下一个节点。
单链表中的指针域只能指向节点的下一个节点。
双链表:每一个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。
@ -56,7 +56,7 @@
![链表3](https://img-blog.csdnimg.cn/20200806194613920.png)
这个链表起始节点为2 终止节点为7 各个节点分布在内存不同地址空间上,通过指针串联在一起。
这个链表起始节点为2 终止节点为7 各个节点分布在内存不同地址空间上,通过指针串联在一起。
# 链表的定义