auto commit

This commit is contained in:
CyC2018 2018-02-27 16:48:09 +08:00
parent 28c2d409aa
commit ed9b2736d4

View File

@ -19,7 +19,7 @@
* [15. 二进制中 1 的个数](#15-二进制中-1-的个数) * [15. 二进制中 1 的个数](#15-二进制中-1-的个数)
* [第三章 高质量的代码](#第三章-高质量的代码) * [第三章 高质量的代码](#第三章-高质量的代码)
* [16. 数值的整数次方](#16-数值的整数次方) * [16. 数值的整数次方](#16-数值的整数次方)
* [18. 删除链表中重复的结点](#18-删除链表中重复的结点) * [18.2 删除链表中重复的结点](#182-删除链表中重复的结点)
* [19. 正则表达式匹配](#19-正则表达式匹配) * [19. 正则表达式匹配](#19-正则表达式匹配)
* [20. 表示数值的字符串](#20-表示数值的字符串) * [20. 表示数值的字符串](#20-表示数值的字符串)
* [21. 调整数组顺序使奇数位于偶数前面](#21-调整数组顺序使奇数位于偶数前面) * [21. 调整数组顺序使奇数位于偶数前面](#21-调整数组顺序使奇数位于偶数前面)
@ -541,12 +541,16 @@ int maxProductAfterCuttin(int length) {
## 15. 二进制中 1 的个数 ## 15. 二进制中 1 的个数
使用库函数:
```java ```java
public int NumberOf1(int n) { public int NumberOf1(int n) {
return Integer.bitCount(n); return Integer.bitCount(n);
} }
``` ```
O(lgM) 时间复杂度解法,其中 M 表示 1 的个数:
n&(n-1) 该位运算是去除 n 的位级表示中最低的那一位。例如对于二进制表示 10110100减去 1 得到 10110011这两个数相与得到 10110000。 n&(n-1) 该位运算是去除 n 的位级表示中最低的那一位。例如对于二进制表示 10110100减去 1 得到 10110011这两个数相与得到 10110000。
```java ```java
@ -558,7 +562,6 @@ public int NumberOf1(int n) {
} }
return cnt; return cnt;
} }
``` ```
# 第三章 高质量的代码 # 第三章 高质量的代码
@ -580,7 +583,7 @@ public double Power(double base, int exponent) {
} }
``` ```
## 18. 删除链表中重复的结点 ## 18.2 删除链表中重复的结点
```java ```java
public ListNode deleteDuplication(ListNode pHead) { public ListNode deleteDuplication(ListNode pHead) {
@ -641,6 +644,10 @@ public boolean isNumeric(char[] str) {
## 21. 调整数组顺序使奇数位于偶数前面 ## 21. 调整数组顺序使奇数位于偶数前面
**题目要求**
保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。
时间复杂度 : O(n<sup>2</sup>) 时间复杂度 : O(n<sup>2</sup>)
空间复杂度 : O(1) 空间复杂度 : O(1)
@ -695,8 +702,6 @@ public ListNode FindKthToTail(ListNode head, int k) {
} }
``` ```
## 23. 链表中环的入口结点 ## 23. 链表中环的入口结点
```java ```java
@ -1455,8 +1460,6 @@ public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
## 53 数字在排序数组中出现的次数 ## 53 数字在排序数组中出现的次数
```java ```java
public int GetNumberOfK(int[] array, int k) { public int GetNumberOfK(int[] array, int k) {
int l = 0, h = array.length - 1; int l = 0, h = array.length - 1;
@ -1735,8 +1738,9 @@ public int maxProfit(int[] prices) {
```java ```java
public int Sum_Solution(int n) { public int Sum_Solution(int n) {
if(n == 0) return 0; int sum = n;
return n + Sum_Solution(n - 1); boolean b = (n > 0) && ((sum += Sum_Solution(n - 1)) > 0);
return sum;
} }
``` ```