auto commit

This commit is contained in:
CyC2018 2018-03-27 11:25:43 +08:00
parent 463af22ce5
commit ff2fce91e0

View File

@ -60,7 +60,7 @@
* [51. 数组中的逆序对](#51-数组中的逆序对) * [51. 数组中的逆序对](#51-数组中的逆序对)
* [52. 两个链表的第一个公共结点](#52-两个链表的第一个公共结点) * [52. 两个链表的第一个公共结点](#52-两个链表的第一个公共结点)
* [53 数字在排序数组中出现的次数](#53-数字在排序数组中出现的次数) * [53 数字在排序数组中出现的次数](#53-数字在排序数组中出现的次数)
* [54. 二叉搜索树的第 k 个结点](#54-二叉搜索树的第-k-个结点) * [54. 二叉搜索树的第 K 个结点](#54-二叉搜索树的第-k-个结点)
* [55 二叉树的深度](#55-二叉树的深度) * [55 二叉树的深度](#55-二叉树的深度)
* [56. 数组中只出现一次的数字](#56-数组中只出现一次的数字) * [56. 数组中只出现一次的数字](#56-数组中只出现一次的数字)
* [57.1 和为 S 的两个数字](#571-和为-s-的两个数字) * [57.1 和为 S 的两个数字](#571-和为-s-的两个数字)
@ -2090,7 +2090,7 @@ private void merge(int[] nums, int first, int mid, int last) {
else if (nums[i] < nums[j]) tmp[k] = nums[i++]; else if (nums[i] < nums[j]) tmp[k] = nums[i++];
else { else {
tmp[k] = nums[j++]; tmp[k] = nums[j++];
this.cnt += mid - i + 1; // a[i] > a[j],说明 a[i...mid] 都大于 a[j] this.cnt += mid - i + 1; // nums[i] > nums[j],说明 nums[i...mid] 都大于 nums[j]
} }
k++; k++;
} }
@ -2116,7 +2116,7 @@ B: b1 → b2 → b3
设 A 的长度为 a + cB 的长度为 b + c其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。 设 A 的长度为 a + cB 的长度为 b + c其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。
当访问 A 链表的指针访问到链表尾部时,令它从链表 B 的头部开始访问链表 B同样地当访问 B 链表的指针访问到链表尾部时,令它从链表 A 的头部开始访问链表 A。这样就能控制访问 A 和 B 两个链表的指针能同时访问到交点。 当访问 A 链表的指针访问到链表尾部时,令它从链表 B 的头部重新开始访问链表 B同样地当访问 B 链表的指针访问到链表尾部时,令它从链表 A 的头部重新开始访问链表 A。这样就能控制访问 A 和 B 两个链表的指针能同时访问到交点。
```java ```java
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
@ -2175,7 +2175,7 @@ private int getLastK(int[] nums, int K) {
} }
``` ```
# 54. 二叉搜索树的第 k 个结点 # 54. 二叉搜索树的第 K 个结点
## 解题思路 ## 解题思路
@ -2240,7 +2240,7 @@ public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) {
## 题目描述 ## 题目描述
输入一个递增排序的数组和一个数字 S在数组中查找两个数是的他们的和正好是 S如果有多对数字的和等于 S输出两个数的乘积最小的。 输入一个递增排序的数组和一个数字 S在数组中查找两个数使得他们的和正好是 S如果有多对数字的和等于 S输出两个数的乘积最小的。
## 解题思路 ## 解题思路
@ -2273,9 +2273,8 @@ public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) { public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) {
ArrayList<ArrayList<Integer>> ret = new ArrayList<>(); ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
int start = 1, end = 2; int start = 1, end = 2;
int mid = sum / 2;
int curSum = 3; int curSum = 3;
while (start <= mid && end < sum) { while (start <= sum / 2 && end < sum) {
if (curSum > sum) { if (curSum > sum) {
curSum -= start; curSum -= start;
start++; start++;
@ -2315,25 +2314,22 @@ public String ReverseSentence(String str) {
if (str.length() == 0) return str; if (str.length() == 0) return str;
int n = str.length(); int n = str.length();
char[] chars = str.toCharArray(); char[] chars = str.toCharArray();
int start = 0, end = 0; int i = 0, j = 0;
while (end <= n) { while (j <= n) {
if (end == n || chars[end] == ' ') { if (j == n || chars[j] == ' ') {
reverse(chars, start, end - 1); reverse(chars, i, j - 1);
start = end + 1; i = j + 1;
} }
end++; j++;
} }
reverse(chars, 0, n - 1); reverse(chars, 0, n - 1);
return new String(chars); return new String(chars);
} }
private void reverse(char[] c, int start, int end) { private void reverse(char[] c, int i, int j) {
while (start < end) { while(i < j) {
char t = c[start]; char t = c[i]; c[i] = c[j]; c[j] = t;
c[start] = c[end]; i++; j--;
c[end] = t;
start++;
end--;
} }
} }
``` ```
@ -2347,22 +2343,19 @@ private void reverse(char[] c, int start, int end) {
## 解题思路 ## 解题思路
```java ```java
public String LeftRotateString(String str, int k) { public String LeftRotateString(String str,int n) {
if (str.length() == 0) return ""; if(str.length() == 0) return "";
char[] c = str.toCharArray(); char[] c = str.toCharArray();
reverse(c, 0, k - 1); reverse(c, 0, n - 1);
reverse(c, k, c.length - 1); reverse(c, n, c.length - 1);
reverse(c, 0, c.length - 1); reverse(c, 0, c.length - 1);
return new String(c); return new String(c);
} }
private void reverse(char[] c, int i, int j) { private void reverse(char[] c, int i, int j) {
while (i < j) { while(i < j) {
char t = c[i]; char t = c[i]; c[i] = c[j]; c[j] = t;
c[i] = c[j]; i++; j--;
c[j] = t;
i++;
j--;
} }
} }
``` ```