auto commit

This commit is contained in:
CyC2018 2018-02-27 14:49:27 +08:00
parent 85fd95bf22
commit 5f16f649bf
2 changed files with 11 additions and 6 deletions

View File

@ -87,7 +87,7 @@
**题目描述** **题目描述**
在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为 7 的数组 {2, 3, 1, 0, 2, 5, 3},那么对应的输出是第一个重复的数字 2。 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为 7 的数组 {2, 3, 1, 0, 2, 5, 3},那么对应的输出是第一个重复的数字 2。
**解题思路** **解题思路**
@ -95,6 +95,7 @@
```java ```java
public boolean duplicate(int numbers[], int length, int[] duplication) { public boolean duplicate(int numbers[], int length, int[] duplication) {
if(numbers == null || length <= 0) return false;
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
while (numbers[i] != i && numbers[i] != numbers[numbers[i]]) { while (numbers[i] != i && numbers[i] != numbers[numbers[i]]) {
swap(numbers, i, numbers[i]); swap(numbers, i, numbers[i]);
@ -120,6 +121,10 @@ private void swap(int[] numbers, int i, int j) {
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
**解题思路**
从右上角开始查找。因为矩阵中的一个数,它左边的数都比它来的小,下面的数都比它来的大。因此,从右上角开始查找,就可以 target 和当前元素的大小关系来改变行和列的下标,从而缩小查找区间。
```java ```java
public boolean Find(int target, int [][] array) { public boolean Find(int target, int [][] array) {
if (array == null || array.length == 0 || array[0].length == 0) return false; if (array == null || array.length == 0 || array[0].length == 0) return false;
@ -169,7 +174,7 @@ public String replaceSpace(StringBuffer str) {
## 6. 从尾到头打印链表 ## 6. 从尾到头打印链表
正向遍历然后调用 Collections.reverse(). 正向遍历然后调用 Collections.reverse()
```java ```java
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {

View File

@ -156,13 +156,13 @@
### 3. 区别 ### 3. 区别
- **拥有资源**:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问率属进程的资源。 - 拥有资源:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问率属进程的资源。
- **调度**:线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。 - 调度:线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。
- **系统开销**由于创建或撤销进程时系统都要为之分配或回收资源如内存空间、I/O 设备等,因此操作系统所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置。而线程切换时只需保存和设置少量寄存器内容,开销很小。 - 系统开销由于创建或撤销进程时系统都要为之分配或回收资源如内存空间、I/O 设备等,因此操作系统所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置。而线程切换时只需保存和设置少量寄存器内容,开销很小。
- **通信方面**:进程间通信 (IPC) 需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以通过直接读/写同一进程中的数据段(如全局变量)来进行通信。 - 通信方面:进程间通信 (IPC) 需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以通过直接读/写同一进程中的数据段(如全局变量)来进行通信。
举例QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 举例QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。