Skip to content

Commit 64af41d

Browse files
committed
leetcode刷题
1 parent bdd96c5 commit 64af41d

File tree

7 files changed

+208
-0
lines changed

7 files changed

+208
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.easyarch.myutils.leetcode.p35;
2+
3+
/**
4+
* Created by xingtianyu on 2018/9/4.
5+
* 搜索插入位置
6+
*/
7+
public class Solution1 {
8+
public static void main(String[] args) {
9+
int []nums = new int[]{};
10+
System.out.println(searchInsert(nums,0));
11+
}
12+
13+
public static int searchInsert(int[] nums, int target) {
14+
int right = nums.length - 1;
15+
int left = 0;
16+
int position = (right + left) / 2;
17+
while (right >= left){
18+
int mid = (right + left) / 2;
19+
System.out.println("right("+right+")+left("+left+")/2 = "+"mid("+mid+")");
20+
if(nums[mid] == target){
21+
return mid;
22+
}else if (nums[mid] > target){
23+
right = mid - 1;
24+
position = mid ;
25+
}else{
26+
left = mid + 1;
27+
position = mid + 1;
28+
}
29+
}
30+
return position;
31+
}
32+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.easyarch.myutils.leetcode.p38;
2+
3+
/**
4+
* Created by xingtianyu on 2018/9/5.
5+
*/
6+
public class Solution1 {
7+
public static void main(String[] args) {
8+
9+
}
10+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.easyarch.myutils.leetcode.p53;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
/**
8+
* Created by xingtianyu on 2018/9/5.
9+
*/
10+
public class Solution1 {
11+
12+
public static void main(String[] args) {
13+
int []nums = new int[]{-1,-2,-5,1,4,-1,10,-4,-8};
14+
System.out.println(maxSubArray(nums));
15+
}
16+
17+
public static int maxSubArray(int[] nums) {
18+
List<Integer> array = new ArrayList<>();
19+
for (int index = 0; index < nums.length;index++){
20+
int sum = nums[index];
21+
array.add(sum);
22+
for (int i = index + 1;i<nums.length;i++){
23+
sum += nums[i];
24+
array.add(sum);
25+
}
26+
}
27+
return Collections.max(array);
28+
}
29+
30+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.easyarch.myutils.leetcode.p53;
2+
3+
/**
4+
* Created by xingtianyu on 2018/9/5.
5+
* 分治法,分左右计算最大连续子数组,再求左边最大子数组+右边最大子数组得到的中间子数组,再求三者之和
6+
*/
7+
public class Solution2 {
8+
9+
public static void main(String[] args) {
10+
int []nums = new int[]{-1,-2,-5,1,4,-1,10,-4,-8};
11+
System.out.println(maxSubArray(nums));
12+
}
13+
14+
public static int maxSubArray(int[] nums) {
15+
return maxSubArray(nums,0,nums.length - 1);
16+
}
17+
18+
public static int maxSubArray(int[] nums,int left,int right){
19+
if (left >= right){
20+
return nums[left];
21+
}
22+
int mid = (left + right) / 2;
23+
int lmax = maxSubArray(nums,left,mid -1);
24+
int rmax = maxSubArray(nums,mid + 1,right);
25+
int mmax = nums[mid];
26+
int sum = mmax;
27+
for (int index = mid - 1;index >= left;index--){
28+
sum += nums[index];
29+
mmax = Math.max(sum,mmax);
30+
}
31+
sum = mmax;
32+
for (int index = mid + 1;index <= right; index++ ){
33+
sum += nums[index];
34+
mmax = Math.max(sum,mmax);
35+
36+
}
37+
return Math.max(mmax,Math.max(lmax,rmax));
38+
}
39+
40+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.easyarch.myutils.leetcode.p53;
2+
3+
/**
4+
* Created by xingtianyu on 2018/9/5.
5+
* 动态规划版。动态规划的思路就是每次求解问题n,使用n-1的结果即可,在问题开始时就算出1 到n-1的结果
6+
*/
7+
public class Solution3 {
8+
9+
public static void main(String[] args) {
10+
int []nums = new int[]{-3,9,-2,3,1,4};
11+
System.out.println(maxSubArray(nums));
12+
}
13+
14+
public static int maxSubArray(int[] nums) {
15+
if (nums == null){
16+
return 0;
17+
}
18+
if (nums.length == 0){
19+
return nums[0];
20+
}
21+
int sum = nums[0];
22+
int max = sum;
23+
for (int index = 1;index<nums.length;index++){
24+
sum = (sum + nums[index]) > nums[index]?(sum + nums[index]):nums[index];
25+
max = sum > max?sum:max;
26+
}
27+
return max;
28+
}
29+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.easyarch.myutils.leetcode.p58;
2+
3+
/**
4+
* Created by xingtianyu on 2018/9/5.
5+
*/
6+
public class Solution1 {
7+
8+
public static void main(String[] args) {
9+
System.out.println(lengthOfLastWord(" "));
10+
}
11+
12+
public static int lengthOfLastWord(String s) {
13+
if (s == null){
14+
return 0;
15+
}
16+
if (s.trim().length() == 0){
17+
return 0;
18+
}
19+
String[] substrings = s.split(" ");
20+
String end = substrings[substrings.length - 1];
21+
if (end.trim().isEmpty()){
22+
return 0;
23+
}
24+
return end.length();
25+
}
26+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.easyarch.myutils.leetcode.p66;
2+
3+
import java.util.Stack;
4+
5+
/**
6+
* Created by xingtianyu on 2018/9/5.
7+
*/
8+
public class Solution1 {
9+
10+
public static void main(String[] args) {
11+
int []num = new int[]{3,2,9};
12+
13+
int []plus = plusOne(num);
14+
for (int i:plus){
15+
System.out.println(i);
16+
}
17+
// long i = 9876543210L + 1;
18+
// System.out.println(i);
19+
}
20+
21+
public static int[] plusOne(int[] digits) {
22+
Stack<Integer> stack = new Stack<>();
23+
int carray = (digits[digits.length - 1] + 1) / 10;
24+
stack.push((digits[digits.length - 1] + 1) % 10);
25+
for (int index = digits.length - 2;index>=0;index--){
26+
stack.push((digits[index] + carray) % 10);
27+
carray = (digits[index] + carray) / 10;
28+
}
29+
if (carray != 0){
30+
stack.push(carray);
31+
}
32+
int []result = new int[stack.size()];
33+
int index = 0;
34+
while (!stack.isEmpty()){
35+
result[index] = stack.pop();
36+
index++;
37+
}
38+
return result;
39+
}
40+
41+
}

0 commit comments

Comments
 (0)