From 107c69cdf7217d187a00bfe0178a374f0a838cb7 Mon Sep 17 00:00:00 2001 From: dingjiawen <745518019@qq.com> Date: Thu, 1 Sep 2022 18:44:02 +0800 Subject: [PATCH] =?UTF-8?q?leecode=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Leecode/pom.xml | 28 ++++++ .../markilue/leecode/array/BinarySearch.java | 98 +++++++++++++++++++ .../markilue/leecode/array/RemoveElement.java | 4 + .../leecode}/listnode/addTwoNumbers.java | 4 +- .../leecode}/listnode/mergeKLists.java | 2 +- .../leecode}/listnode/mergeTwoLists.java | 2 +- .../leecode}/listnode/removeNthFromEnd.java | 2 +- .../listnode/selftry/mergeKLists.java | 4 +- .../listnode/selftry/mergeTwoLists.java | 5 +- .../listnode/selftry/removeNthFromEnd.java | 2 +- .../listnode/selftry/reverseKGroup.java | 4 +- .../leecode}/listnode/selftry/swapPairs.java | 2 +- .../markilue/leecode}/listnode/swapPairs.java | 2 +- .../markilue/leecode}/sort/ThreeSum.java | 10 +- .../com/markilue/leecode/test/Fibonaqi.java | 36 +++++++ .../markilue/leecode}/tree/DeleteNode.java | 7 +- .../leecode}/tree/InorderTraversal.java | 4 +- .../markilue/leecode}/tree/TreeNode.java | 2 +- 18 files changed, 187 insertions(+), 31 deletions(-) create mode 100644 Leecode/src/main/java/com/markilue/leecode/array/BinarySearch.java create mode 100644 Leecode/src/main/java/com/markilue/leecode/array/RemoveElement.java rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/addTwoNumbers.java (96%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/mergeKLists.java (98%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/mergeTwoLists.java (97%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/removeNthFromEnd.java (98%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/selftry/mergeKLists.java (97%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/selftry/mergeTwoLists.java (94%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/selftry/removeNthFromEnd.java (97%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/selftry/reverseKGroup.java (83%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/selftry/swapPairs.java (96%) rename Leecode/src/main/java/{ => com/markilue/leecode}/listnode/swapPairs.java (97%) rename Leecode/src/main/java/{ => com/markilue/leecode}/sort/ThreeSum.java (94%) create mode 100644 Leecode/src/main/java/com/markilue/leecode/test/Fibonaqi.java rename Leecode/src/main/java/{ => com/markilue/leecode}/tree/DeleteNode.java (95%) rename Leecode/src/main/java/{ => com/markilue/leecode}/tree/InorderTraversal.java (99%) rename Leecode/src/main/java/{ => com/markilue/leecode}/tree/TreeNode.java (93%) diff --git a/Leecode/pom.xml b/Leecode/pom.xml index b4c264f..5813608 100644 --- a/Leecode/pom.xml +++ b/Leecode/pom.xml @@ -8,6 +8,34 @@ Leecode 1.0-SNAPSHOT + + + + + + + + + + org.projectlombok + lombok + 1.18.12 + provided + + + + + junit + junit + 4.13.2 + test + + + junit + junit + 4.13.2 + compile + org.projectlombok lombok diff --git a/Leecode/src/main/java/com/markilue/leecode/array/BinarySearch.java b/Leecode/src/main/java/com/markilue/leecode/array/BinarySearch.java new file mode 100644 index 0000000..277a04c --- /dev/null +++ b/Leecode/src/main/java/com/markilue/leecode/array/BinarySearch.java @@ -0,0 +1,98 @@ +package com.markilue.leecode.array; + +/** + * 力扣题号704:二分查找 + * 描述:给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。 + * + */ +public class BinarySearch { + + public static void main(String[] args) { + int[] nums = {-1,0,3,5,9,12}; + int target = 9; + + System.out.println(search(nums,target)); + + + + } + + + /** + * 非递归法 + * @param nums + * @param target + * @return + */ + public static int search(int[] nums, int target) { + + int left=0; + int right = nums.length; + + + while (left>1避免right+left超过了int最大值 + //由于舍入问题,mid永远小于right,因此 可以写right = nums.length + int mid=left+((right-left)>>1); + if(nums[mid]target){ + right=mid; + }else { + return mid; + } + } + + return -1; + + } + + + /** + * 递归法 + * @param nums + * @param target + * @return + */ + public static int search1(int[] nums, int target) { + + //记录数组长度 + return find(nums,0,nums.length-1,target); + } + + public static int find(int[] nums,int start,int stop, int target){ + + + /** + * 解决N.5只能舍不能入,最后可能无限循环的问题 + */ + if(nums[start]==target){ + return start; + } + if(nums[stop]==target){ + return stop; + } + + if(start==stop-1&&nums[stop]!=target){ + return -1; + } + + + + if(start==stop){ + if(nums[start]==target){ + return start; + }else { + return -1; + } + } + int mid = start+(stop-start)/2; + if(nums[mid]target){ + return find(nums,start,mid,target); + }else { + return mid; + } + } +} diff --git a/Leecode/src/main/java/com/markilue/leecode/array/RemoveElement.java b/Leecode/src/main/java/com/markilue/leecode/array/RemoveElement.java new file mode 100644 index 0000000..28ad860 --- /dev/null +++ b/Leecode/src/main/java/com/markilue/leecode/array/RemoveElement.java @@ -0,0 +1,4 @@ +package com.markilue.leecode.array; + +public class RemoveElement { +} diff --git a/Leecode/src/main/java/listnode/addTwoNumbers.java b/Leecode/src/main/java/com/markilue/leecode/listnode/addTwoNumbers.java similarity index 96% rename from Leecode/src/main/java/listnode/addTwoNumbers.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/addTwoNumbers.java index 4e71e10..06c0b08 100644 --- a/Leecode/src/main/java/listnode/addTwoNumbers.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/addTwoNumbers.java @@ -1,4 +1,4 @@ -package listnode; +package com.markilue.leecode.listnode; /** * Definition for singly-linked list. * public class ListNode { @@ -10,8 +10,6 @@ package listnode; * } */ -import com.sun.corba.se.impl.resolver.SplitLocalResolverImpl; - /** * 2.两数相加 */ diff --git a/Leecode/src/main/java/listnode/mergeKLists.java b/Leecode/src/main/java/com/markilue/leecode/listnode/mergeKLists.java similarity index 98% rename from Leecode/src/main/java/listnode/mergeKLists.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/mergeKLists.java index 03b0938..9470024 100644 --- a/Leecode/src/main/java/listnode/mergeKLists.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/mergeKLists.java @@ -1,4 +1,4 @@ -package listnode; +package com.markilue.leecode.listnode; public class mergeKLists { diff --git a/Leecode/src/main/java/listnode/mergeTwoLists.java b/Leecode/src/main/java/com/markilue/leecode/listnode/mergeTwoLists.java similarity index 97% rename from Leecode/src/main/java/listnode/mergeTwoLists.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/mergeTwoLists.java index 2adebcc..580a8c8 100644 --- a/Leecode/src/main/java/listnode/mergeTwoLists.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/mergeTwoLists.java @@ -1,4 +1,4 @@ -package listnode; +package com.markilue.leecode.listnode; public class mergeTwoLists { diff --git a/Leecode/src/main/java/listnode/removeNthFromEnd.java b/Leecode/src/main/java/com/markilue/leecode/listnode/removeNthFromEnd.java similarity index 98% rename from Leecode/src/main/java/listnode/removeNthFromEnd.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/removeNthFromEnd.java index 10e91e7..1bb03ea 100644 --- a/Leecode/src/main/java/listnode/removeNthFromEnd.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/removeNthFromEnd.java @@ -1,4 +1,4 @@ -package listnode; +package com.markilue.leecode.listnode; /** * 删除链表的倒数第N个节点 diff --git a/Leecode/src/main/java/listnode/selftry/mergeKLists.java b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/mergeKLists.java similarity index 97% rename from Leecode/src/main/java/listnode/selftry/mergeKLists.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/selftry/mergeKLists.java index 76035c2..cee0228 100644 --- a/Leecode/src/main/java/listnode/selftry/mergeKLists.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/mergeKLists.java @@ -1,6 +1,4 @@ -package listnode.selftry; - -import listnode.mergeTwoLists; +package com.markilue.leecode.listnode.selftry; public class mergeKLists { diff --git a/Leecode/src/main/java/listnode/selftry/mergeTwoLists.java b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/mergeTwoLists.java similarity index 94% rename from Leecode/src/main/java/listnode/selftry/mergeTwoLists.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/selftry/mergeTwoLists.java index f8fcfaa..669d4b9 100644 --- a/Leecode/src/main/java/listnode/selftry/mergeTwoLists.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/mergeTwoLists.java @@ -1,7 +1,4 @@ -package listnode.selftry; - -import listnode.addTwoNumbers; -import listnode.removeNthFromEnd; +package com.markilue.leecode.listnode.selftry; public class mergeTwoLists { diff --git a/Leecode/src/main/java/listnode/selftry/removeNthFromEnd.java b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/removeNthFromEnd.java similarity index 97% rename from Leecode/src/main/java/listnode/selftry/removeNthFromEnd.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/selftry/removeNthFromEnd.java index 9585039..61450fd 100644 --- a/Leecode/src/main/java/listnode/selftry/removeNthFromEnd.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/removeNthFromEnd.java @@ -1,4 +1,4 @@ -package listnode.selftry; +package com.markilue.leecode.listnode.selftry; /** * 删除链表的倒数第N个节点 diff --git a/Leecode/src/main/java/listnode/selftry/reverseKGroup.java b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/reverseKGroup.java similarity index 83% rename from Leecode/src/main/java/listnode/selftry/reverseKGroup.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/selftry/reverseKGroup.java index 6d2403f..c05f7d3 100644 --- a/Leecode/src/main/java/listnode/selftry/reverseKGroup.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/reverseKGroup.java @@ -1,6 +1,6 @@ -package listnode.selftry; +package com.markilue.leecode.listnode.selftry; -import listnode.swapPairs; +import com.markilue.leecode.listnode.swapPairs; public class reverseKGroup { diff --git a/Leecode/src/main/java/listnode/selftry/swapPairs.java b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/swapPairs.java similarity index 96% rename from Leecode/src/main/java/listnode/selftry/swapPairs.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/selftry/swapPairs.java index fe7061e..8b81157 100644 --- a/Leecode/src/main/java/listnode/selftry/swapPairs.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/selftry/swapPairs.java @@ -1,4 +1,4 @@ -package listnode.selftry; +package com.markilue.leecode.listnode.selftry; diff --git a/Leecode/src/main/java/listnode/swapPairs.java b/Leecode/src/main/java/com/markilue/leecode/listnode/swapPairs.java similarity index 97% rename from Leecode/src/main/java/listnode/swapPairs.java rename to Leecode/src/main/java/com/markilue/leecode/listnode/swapPairs.java index 202be74..8515530 100644 --- a/Leecode/src/main/java/listnode/swapPairs.java +++ b/Leecode/src/main/java/com/markilue/leecode/listnode/swapPairs.java @@ -1,4 +1,4 @@ -package listnode; +package com.markilue.leecode.listnode; diff --git a/Leecode/src/main/java/sort/ThreeSum.java b/Leecode/src/main/java/com/markilue/leecode/sort/ThreeSum.java similarity index 94% rename from Leecode/src/main/java/sort/ThreeSum.java rename to Leecode/src/main/java/com/markilue/leecode/sort/ThreeSum.java index 79675a9..ead26e1 100644 --- a/Leecode/src/main/java/sort/ThreeSum.java +++ b/Leecode/src/main/java/com/markilue/leecode/sort/ThreeSum.java @@ -1,6 +1,4 @@ -package sort; - -import com.sun.corba.se.impl.ior.FreezableList; +package com.markilue.leecode.sort; import java.util.*; @@ -34,7 +32,7 @@ public class ThreeSum { public static List> threeSum(int[] nums) { - List> parentList = new ArrayList<>(); + List> parentList = new ArrayList>(); if (nums.length < 3) { return parentList; @@ -78,7 +76,7 @@ public class ThreeSum { } //如果是第二个条件跳出的循环 if (nums[j] + nums[k] == need) { - List list = new ArrayList<>(); + List list = new ArrayList(); list.add(nums[i]); list.add(nums[j]); list.add(nums[k]); @@ -99,7 +97,7 @@ public class ThreeSum { //更简洁一点的思路 public static List> threeSum1(int[] nums) { - List> parentList = new ArrayList<>(); + List> parentList = new ArrayList>(); if (nums.length < 3) { return parentList; diff --git a/Leecode/src/main/java/com/markilue/leecode/test/Fibonaqi.java b/Leecode/src/main/java/com/markilue/leecode/test/Fibonaqi.java new file mode 100644 index 0000000..4cf42d6 --- /dev/null +++ b/Leecode/src/main/java/com/markilue/leecode/test/Fibonaqi.java @@ -0,0 +1,36 @@ +package com.markilue.leecode.test; + +public class Fibonaqi { + + + /** + * 测试使用时间复杂度为n的斐波那契数列递归法 + * + */ +// @Test +// public static void testFibonaqi(){ +// +// } + + public static void main(String[] args) { + int n=5; + System.out.println(fibonacci(1,1,10)); + } + + public static int fibonacci(int first,int second,int n){ + if(n<=0){ + return 0; + } + if(n <3){ + return 1; + }else if(n==3){ + return first+second; + } + else { + return fibonacci(second,first+second,n-1); + } + } + + + +} diff --git a/Leecode/src/main/java/tree/DeleteNode.java b/Leecode/src/main/java/com/markilue/leecode/tree/DeleteNode.java similarity index 95% rename from Leecode/src/main/java/tree/DeleteNode.java rename to Leecode/src/main/java/com/markilue/leecode/tree/DeleteNode.java index fef6b63..c347f45 100644 --- a/Leecode/src/main/java/tree/DeleteNode.java +++ b/Leecode/src/main/java/com/markilue/leecode/tree/DeleteNode.java @@ -1,11 +1,10 @@ -package tree; +package com.markilue.leecode.tree; + -import lombok.Data; -import lombok.ToString; import java.util.List; -import static tree.InorderTraversal.inorderTraversal1; +import static com.markilue.leecode.tree.InorderTraversal.inorderTraversal1; /** * 删除二叉排序树的某个节点 diff --git a/Leecode/src/main/java/tree/InorderTraversal.java b/Leecode/src/main/java/com/markilue/leecode/tree/InorderTraversal.java similarity index 99% rename from Leecode/src/main/java/tree/InorderTraversal.java rename to Leecode/src/main/java/com/markilue/leecode/tree/InorderTraversal.java index f3e5758..920a458 100644 --- a/Leecode/src/main/java/tree/InorderTraversal.java +++ b/Leecode/src/main/java/com/markilue/leecode/tree/InorderTraversal.java @@ -1,6 +1,6 @@ -package tree; +package com.markilue.leecode.tree; + -import lombok.Data; import java.util.ArrayList; import java.util.List; diff --git a/Leecode/src/main/java/tree/TreeNode.java b/Leecode/src/main/java/com/markilue/leecode/tree/TreeNode.java similarity index 93% rename from Leecode/src/main/java/tree/TreeNode.java rename to Leecode/src/main/java/com/markilue/leecode/tree/TreeNode.java index a216ba2..aad506b 100644 --- a/Leecode/src/main/java/tree/TreeNode.java +++ b/Leecode/src/main/java/com/markilue/leecode/tree/TreeNode.java @@ -1,4 +1,4 @@ -package tree; +package com.markilue.leecode.tree; import lombok.Data;