From e33d653d940bbdcaf3aa45e953d38c5d741b3bc1 Mon Sep 17 00:00:00 2001 From: wb-hjk570755 Date: Fri, 3 Apr 2020 14:59:32 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/easy/_053/Solution.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/com/blankj/easy/_053/Solution.java b/src/com/blankj/easy/_053/Solution.java index 9e343c79..0bc79aa3 100644 --- a/src/com/blankj/easy/_053/Solution.java +++ b/src/com/blankj/easy/_053/Solution.java @@ -45,4 +45,15 @@ public static void main(String[] args) { int[] nums0 = new int[]{-2, 1, -3, 4, -1, 2, 1, -5, 4}; System.out.println(solution.maxSubArray(nums0)); } + + public int maxSubArrayByD(int[] nums) { + int len = nums.length, dp = nums[0], max = dp; + for (int i = 1; i < len; ++i) { + dp = nums[i] + (dp > 0 ? dp : 0); + if (dp > max) { + max = dp; + } + } + return max; + } } From c7fb61e6bc6e7510640a6517a2849d637ab7def8 Mon Sep 17 00:00:00 2001 From: wb-hjk570755 Date: Wed, 20 May 2020 09:10:55 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E4=BA=8C=E5=8F=89=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=E6=A0=91=E7=9A=84=E5=90=8E=E7=BB=A7=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/easy/_053/Kuai_shou_test.java | 25 +++++++ src/com/blankj/myself/TreePostNode.java | 68 ++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 src/com/blankj/easy/_053/Kuai_shou_test.java create mode 100644 src/com/blankj/myself/TreePostNode.java diff --git a/src/com/blankj/easy/_053/Kuai_shou_test.java b/src/com/blankj/easy/_053/Kuai_shou_test.java new file mode 100644 index 00000000..84e82356 --- /dev/null +++ b/src/com/blankj/easy/_053/Kuai_shou_test.java @@ -0,0 +1,25 @@ +package com.blankj.easy._053; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/4/3 + */ +public class Kuai_shou_test { + public static void main(String[] args) { + String a = "abc"; + for (int i=0;i stack = new Stack<>(); + TreeNode result = null; + if(Objects.nonNull(p.right)){ + result = p.right; + while (Objects.nonNull(result.left)){ + result = result.left; + } + }else { + stack.add(root); + TreeNode temp = root; + Boolean findFlag = false; + while (!findFlag){ + if(p.val>temp.val){ + temp = temp.right; + stack.add(temp); + + }else if(p.val0&&!findFlag){ + TreeNode parent = stack.pop(); + if(child == parent.left){ + result = parent; + findFlag = true; + }else { + child = parent; + } + } + + } + return result; + } + + public class TreeNode { + int val; + TreeNode left; + TreeNode right; + TreeNode(int x) { val = x; } + } +} From fb0dfb724d17fc70a7305ff0523193643d26b13d Mon Sep 17 00:00:00 2001 From: wb-hjk570755 Date: Wed, 20 May 2020 09:25:30 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E8=B7=B3=E9=98=B6=E6=A2=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/myself/SkipLadder.java | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/com/blankj/myself/SkipLadder.java diff --git a/src/com/blankj/myself/SkipLadder.java b/src/com/blankj/myself/SkipLadder.java new file mode 100644 index 00000000..2ec24814 --- /dev/null +++ b/src/com/blankj/myself/SkipLadder.java @@ -0,0 +1,28 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/5/20 + */ +public class SkipLadder { + public static void main(String[] args) { + + } + + public int climbStairs(int n) { + if(n==1){ + return 1; + } + int[] nums = new int[n]; + nums[0] = 1; + nums[1] = 2; + for (int i=2;i Date: Tue, 22 Sep 2020 15:34:25 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E8=B7=B3=E9=98=B6=E6=A2=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/concurrent/BoundedQueue.java | 12 +++++ src/com/blankj/myself/InorderTraversal.java | 43 +++++++++++++++ .../myself/InorderTraversalByStack.java | 35 +++++++++++++ src/com/blankj/myself/IsPalindrome.java | 27 ++++++++++ .../blankj/myself/LongestCommonPrefix.java | 36 +++++++++++++ src/com/blankj/myself/RebuildTree.java | 45 ++++++++++++++++ src/com/blankj/myself/RomanToInt.java | 41 +++++++++++++++ src/com/blankj/myself/Test.java | 15 ++++++ src/com/blankj/myself/ThreeSum.java | 52 +++++++++++++++++++ 9 files changed, 306 insertions(+) create mode 100644 src/com/blankj/concurrent/BoundedQueue.java create mode 100644 src/com/blankj/myself/InorderTraversal.java create mode 100644 src/com/blankj/myself/InorderTraversalByStack.java create mode 100644 src/com/blankj/myself/IsPalindrome.java create mode 100644 src/com/blankj/myself/LongestCommonPrefix.java create mode 100644 src/com/blankj/myself/RebuildTree.java create mode 100644 src/com/blankj/myself/RomanToInt.java create mode 100644 src/com/blankj/myself/Test.java create mode 100644 src/com/blankj/myself/ThreeSum.java diff --git a/src/com/blankj/concurrent/BoundedQueue.java b/src/com/blankj/concurrent/BoundedQueue.java new file mode 100644 index 00000000..29ba3cf7 --- /dev/null +++ b/src/com/blankj/concurrent/BoundedQueue.java @@ -0,0 +1,12 @@ +package com.blankj.concurrent; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/22 + */ +public class BoundedQueue { +} diff --git a/src/com/blankj/myself/InorderTraversal.java b/src/com/blankj/myself/InorderTraversal.java new file mode 100644 index 00000000..e1326a56 --- /dev/null +++ b/src/com/blankj/myself/InorderTraversal.java @@ -0,0 +1,43 @@ +package com.blankj.myself; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/14 + */ +public class InorderTraversal { + public static void main(String[] args) { + + } + + + public List inorderTraversal(TreeNode root) { + List list = new ArrayList<>(); + dfs(root,list); + return list; + } + + public void dfs(TreeNode root,List list) { + if(root==null){ + return; + } + dfs(root.left,list); + list.add(root.val); + dfs(root.right,list); + } + + + + public class TreeNode { + int val; + TreeNode left; + TreeNode right; + TreeNode(int x) { val = x; } + } +} diff --git a/src/com/blankj/myself/InorderTraversalByStack.java b/src/com/blankj/myself/InorderTraversalByStack.java new file mode 100644 index 00000000..e94eaa73 --- /dev/null +++ b/src/com/blankj/myself/InorderTraversalByStack.java @@ -0,0 +1,35 @@ +package com.blankj.myself; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + +import com.blankj.myself.InorderTraversal.TreeNode; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/14 + */ +public class InorderTraversalByStack { + + public List inorderTraversal(TreeNode root) { + List list = new ArrayList<>(); + Stack stack = new Stack(); + TreeNode curr = root; + while (curr!=null||!stack.isEmpty()){ + if(curr!=null){ + stack.push(curr.left); + curr = curr.left; + }else { + curr = (TreeNode) stack.pop(); + list.add(curr.val); + curr = curr.right; + } + } + return list; + } +} diff --git a/src/com/blankj/myself/IsPalindrome.java b/src/com/blankj/myself/IsPalindrome.java new file mode 100644 index 00000000..56a60f71 --- /dev/null +++ b/src/com/blankj/myself/IsPalindrome.java @@ -0,0 +1,27 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/21 + */ +public class IsPalindrome { + public static void main(String[] args) { + IsPalindrome isPalindrome = new IsPalindrome(); + System.out.println(isPalindrome.isPalindrome(1001)); + } + public boolean isPalindrome(int x) { + boolean isPalindrome = true; + String xStr = String.valueOf(x); + + for (int i=0;i(); + for (int i = 0; i < preorder.length; i++) { + indexMap.put(inorder[i],i); + } + return reBuildTree(0,0,inorder.length-1,preorder,inorder,indexMap); + } + + + public TreeNode reBuildTree(int preRootIndex, int inorderLeftIndex,int inorderRightIndex,int[] preorder, int[] inorder,Map indexMap) { + if(inorderLeftIndex>=inorderRightIndex){ + return null; + } + int index = (int)indexMap.get(preorder[preRootIndex]); + TreeNode treeNode = new TreeNode(preorder[preRootIndex]); + treeNode.left = reBuildTree(preRootIndex+1,inorderLeftIndex,index-1,preorder,inorder,indexMap); + treeNode.right = reBuildTree(preRootIndex+index-inorderLeftIndex+1,index+1,inorderRightIndex,preorder,inorder,indexMap); + return treeNode; + } + + + + public class TreeNode { + int val; + TreeNode left; + TreeNode right; + TreeNode(int x) { val = x; } + } +} diff --git a/src/com/blankj/myself/RomanToInt.java b/src/com/blankj/myself/RomanToInt.java new file mode 100644 index 00000000..6d424252 --- /dev/null +++ b/src/com/blankj/myself/RomanToInt.java @@ -0,0 +1,41 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/21 + */ +public class RomanToInt { + public int romanToInt(String s) { + int sum = 0; + int pre = cast(s.charAt(0)); + for(int i=1;i> threeSum(int[] nums) { + List> result = new ArrayList<>(); + Arrays.sort(nums); + int length = nums.length; + for(int k=0;k0){ + return result; + } + if(k>0&&nums[k]==nums[k-1]){ + continue; + } + int L=k+1; + int R=length-1; + while (L 0){ + R = R-1; + } + } + } + return result; + } +} From 4081e2b7857c3fc8e33f9e928355e8ab783f8eab Mon Sep 17 00:00:00 2001 From: wb-hjk570755 Date: Tue, 22 Sep 2020 17:07:11 +0800 Subject: [PATCH 05/12] =?UTF-8?q?condition=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/concurrent/BoundedQueue.java | 57 ++++++++++++++++ .../blankj/concurrent/BoundedQueueTest.java | 38 +++++++++++ .../blankj/concurrent/ConditionUseCase.java | 66 +++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 src/com/blankj/concurrent/BoundedQueueTest.java create mode 100644 src/com/blankj/concurrent/ConditionUseCase.java diff --git a/src/com/blankj/concurrent/BoundedQueue.java b/src/com/blankj/concurrent/BoundedQueue.java index 29ba3cf7..7ee65b05 100644 --- a/src/com/blankj/concurrent/BoundedQueue.java +++ b/src/com/blankj/concurrent/BoundedQueue.java @@ -1,4 +1,8 @@ package com.blankj.concurrent; +import java.util.LinkedList; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * Description: @@ -9,4 +13,57 @@ * @version 1.0 2020/9/22 */ public class BoundedQueue { + + private LinkedList buffer; //生产者容器 + private int maxSize ; //容器最大值是多少 + private Lock lock; + private Condition fullCondition; + private Condition notFullCondition; + BoundedQueue(int maxSize){ + this.maxSize = maxSize; + buffer = new LinkedList(); + lock = new ReentrantLock(); + fullCondition = lock.newCondition(); + notFullCondition = lock.newCondition(); + } + + /** + * 生产者 + * @param obj + * @throws InterruptedException + */ + public void put(Object obj) throws InterruptedException { + lock.lock(); //获取锁 + try { + while (maxSize == buffer.size()){ + System.out.println("满了,添加的线程进入等待状态"); + notFullCondition.await(); //满了,添加的线程进入等待状态 + } + buffer.add(obj); + fullCondition.signal(); //通知 + } finally { + lock.unlock(); + } + } + + /** + * 消费者 + * @return + * @throws InterruptedException + */ + public Object get() throws InterruptedException { + Object obj; + lock.lock(); + try { + while (buffer.size() == 0){ //队列中没有数据了 线程进入等待状态 + System.out.println("队列中没有数据了 线程进入等待状态"); + fullCondition.await(); + } + obj = buffer.poll(); + notFullCondition.signal(); //通知 + } finally { + lock.unlock(); + } + return obj; + } } diff --git a/src/com/blankj/concurrent/BoundedQueueTest.java b/src/com/blankj/concurrent/BoundedQueueTest.java new file mode 100644 index 00000000..a66939f0 --- /dev/null +++ b/src/com/blankj/concurrent/BoundedQueueTest.java @@ -0,0 +1,38 @@ +package com.blankj.concurrent; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/22 + */ +public class BoundedQueueTest { + public static void main(String[] args) { + BoundedQueue boundedQueue = new BoundedQueue(5); + + ExecutorService executorService = Executors.newFixedThreadPool(2); + executorService.execute(()->{ + for (int i=0;i<10000;i++){ + try { + boundedQueue.put(new Object()); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + executorService.execute(()->{ + for (int i=0;i<10000;i++){ + try { + boundedQueue.get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + } +} diff --git a/src/com/blankj/concurrent/ConditionUseCase.java b/src/com/blankj/concurrent/ConditionUseCase.java new file mode 100644 index 00000000..9994ff19 --- /dev/null +++ b/src/com/blankj/concurrent/ConditionUseCase.java @@ -0,0 +1,66 @@ +package com.blankj.concurrent; + + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/22 + */ +public class ConditionUseCase { + + public Lock lock = new ReentrantLock(); + public Condition condition = lock.newCondition(); + + public static void main(String[] args) { + ConditionUseCase useCase = new ConditionUseCase(); + ExecutorService executorService = Executors.newFixedThreadPool (2); + executorService.execute(new Runnable() { + @Override + public void run() { + useCase.conditionWait(); + } + }); + executorService.execute(new Runnable() { + @Override + public void run() { + useCase.conditionSignal(); + } + }); + } + + public void conditionWait() { + lock.lock(); + try { + System.out.println(Thread.currentThread().getName() + "拿到锁了"); + System.out.println(Thread.currentThread().getName() + "等待信号"); + condition.await(); + System.out.println(Thread.currentThread().getName() + "拿到信号"); + }catch (Exception e){ + + }finally { + lock.unlock(); + } + } + public void conditionSignal() { + lock.lock(); + try { + Thread.sleep(5000); + System.out.println(Thread.currentThread().getName() + "拿到锁了"); + condition.signal(); + System.out.println(Thread.currentThread().getName() + "发出信号"); + }catch (Exception e){ + + }finally { + lock.unlock(); + } + } + +} From 0d34ceece07970e74266c434a54a83a923bd9fc1 Mon Sep 17 00:00:00 2001 From: wb-hjk570755 Date: Mon, 28 Sep 2020 23:32:05 +0800 Subject: [PATCH 06/12] =?UTF-8?q?condition=E7=94=A8=E4=BE=8B=20=E4=B8=89?= =?UTF-8?q?=E4=B8=AA=E7=BA=BF=E7=A8=8B=E4=BA=A4=E6=9B=BF=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/myself/ArrHeaderTailMax.java | 77 ++++++++++++++ src/com/blankj/myself/ClimbStairs.java | 67 ++++++++++++ src/com/blankj/myself/Exercise14.java | 40 +++++++ src/com/blankj/myself/StackTest.java | 35 +++++++ src/com/blankj/myself/ThreeThreadPrint.java | 110 ++++++++++++++++++++ src/com/blankj/myself/TwoThreadPrint.java | 86 +++++++++++++++ 6 files changed, 415 insertions(+) create mode 100644 src/com/blankj/myself/ArrHeaderTailMax.java create mode 100644 src/com/blankj/myself/ClimbStairs.java create mode 100644 src/com/blankj/myself/Exercise14.java create mode 100644 src/com/blankj/myself/StackTest.java create mode 100644 src/com/blankj/myself/ThreeThreadPrint.java create mode 100644 src/com/blankj/myself/TwoThreadPrint.java diff --git a/src/com/blankj/myself/ArrHeaderTailMax.java b/src/com/blankj/myself/ArrHeaderTailMax.java new file mode 100644 index 00000000..7ebc46e7 --- /dev/null +++ b/src/com/blankj/myself/ArrHeaderTailMax.java @@ -0,0 +1,77 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/28 + */ +public class ArrHeaderTailMax { + + public static int max(int[] a){ + int sum = 0; + for(int i=0;i 1) { + // 意思是先选一个,然后求剩下数组对方先选获得的最大值,用sum减去对方获得的最大值,即是自己的最大值 + // 然后比较选头还是尾更好 + lmax = sum - act(a, sum - a[l], l + 1, r); + rmax = sum - act(a, sum - a[r], l, r - 1); + return lmax > rmax ? lmax : rmax; + } else {//剩下2个 + return a[l] > a[r] ? a[l] : a[r]; + } + + } + + public static void main(String[] args) { + int v[] = {1, 2, 3, 6, 9, 5, 7, 4, 2, 6, 9, 5, 8, 7, 2, 1, 55, 3, 6, 9, 7, 5, 2}; + int n = max(v, 0, v.length - 1); + System.out.println(n); + } +} diff --git a/src/com/blankj/myself/StackTest.java b/src/com/blankj/myself/StackTest.java new file mode 100644 index 00000000..12a92bc3 --- /dev/null +++ b/src/com/blankj/myself/StackTest.java @@ -0,0 +1,35 @@ +package com.blankj.myself; + +import java.util.Stack; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/23 + */ +public class StackTest { + public static void main(String[] args) { + StackTest stackTest = new StackTest(); + stackTest.isValid("()"); + } + public boolean isValid(String s) { + Stack stack = new Stack<>(); + for(char a:s.toCharArray()){ + if(a=='('){ + stack.push(')'); + }else if(a=='['){ + stack.push(']'); + }else if(a=='{'){ + stack.push('}'); + }else { + if(stack.pop()!=a||stack.isEmpty()){ + return false; + } + } + } + return stack.isEmpty(); + } +} diff --git a/src/com/blankj/myself/ThreeThreadPrint.java b/src/com/blankj/myself/ThreeThreadPrint.java new file mode 100644 index 00000000..72334df7 --- /dev/null +++ b/src/com/blankj/myself/ThreeThreadPrint.java @@ -0,0 +1,110 @@ +package com.blankj.myself; + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.ReentrantLock; + + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/28 + */ +public class ThreeThreadPrint { + + public static void main(String[] args) throws InterruptedException { + String a = "sahjfhasjfhakjfhkjh"; + char[] arry = a.toCharArray(); + AtomicInteger index = new AtomicInteger(); + ReentrantLock lock = new ReentrantLock(); + Condition condition1 = lock.newCondition(); + Condition condition2 = lock.newCondition(); + Condition condition3 = lock.newCondition(); + + + new Thread(()->{ + Boolean finish = false; + + try { + + lock.lock(); + while (!finish) { + + System.out.println(Thread.currentThread().getName() + ": " + arry[index.getAndAdd(1)]); + condition2.signal(); + condition1.await(); + + if (index.get() > arry.length) { + finish = true; + } + } + + }catch (Exception e){ + + }finally { + lock.unlock(); + } + + }).start(); + + + new Thread(()->{ + Boolean finish = false; + + try { + lock.lock(); + while (!finish) { + System.out.println(Thread.currentThread().getName() + ": " + arry[index.getAndAdd(1)]); + + condition3.signal(); + condition2.await(); + + if (index.get() > arry.length) { + finish = true; + } + } + + }catch (Exception e){ + + }finally { + lock.unlock(); + } + + + + }).start(); + + new Thread(()->{ + Boolean finish = false; + + try { + lock.lock(); + while (!finish) { + System.out.println(Thread.currentThread().getName() + ": " + arry[index.getAndAdd(1)]); + + condition1.signal(); + condition3.await(); + + if (index.get() > arry.length) { + finish = true; + } + } + + }catch (Exception e){ + + }finally { + lock.unlock(); + } + + + + }).start(); + + + Thread.sleep(100000); + } + +} diff --git a/src/com/blankj/myself/TwoThreadPrint.java b/src/com/blankj/myself/TwoThreadPrint.java new file mode 100644 index 00000000..ebaa2872 --- /dev/null +++ b/src/com/blankj/myself/TwoThreadPrint.java @@ -0,0 +1,86 @@ +package com.blankj.myself; + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/9/28 + */ +public class TwoThreadPrint { + + public static void main(String[] args) throws InterruptedException { + String a = "sahjfhasjfhakjfhkjhk"; + char[] arry = a.toCharArray(); + AtomicInteger index = new AtomicInteger(); + ReentrantLock lock = new ReentrantLock(); + Condition condition1 = lock.newCondition(); + Condition condition2 = lock.newCondition(); + + + new Thread(()->{ + Boolean finish = false; + + try { + + lock.lock(); + while (!finish) { + + System.out.println(Thread.currentThread().getName() + ": " + arry[index.getAndAdd(1)]); + condition2.signal(); + condition1.await(); + + if (index.get() > arry.length) { + finish = true; + } + } + + }catch (Exception e){ + + }finally { + condition2.signal(); + System.out.println("11111"); + lock.unlock(); + } + + }).start(); + + + new Thread(()->{ + Boolean finish = false; + + try { + lock.lock(); + while (!finish) { + System.out.println(Thread.currentThread().getName() + ": " + arry[index.getAndAdd(1)]); + + condition1.signal(); + condition2.await(); + + if (index.get() > arry.length) { + finish = true; + } + } + + }catch (Exception e){ + + }finally { + condition1.signal(); + System.out.println("22222"); + lock.unlock(); + } + + + + }).start(); + + + + } + +} From 7ae4a98acd2e8c809be29ceed2396f93cce9358e Mon Sep 17 00:00:00 2001 From: wb-hjk570755 Date: Thu, 1 Oct 2020 15:43:56 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E9=A2=84=E6=B5=8B=E8=B5=A2=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/myself/ArrHeaderTailMax.java | 38 +++++++++++++++------ src/com/blankj/myself/PredictTheWinner.java | 35 +++++++++++++++++++ 2 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 src/com/blankj/myself/PredictTheWinner.java diff --git a/src/com/blankj/myself/ArrHeaderTailMax.java b/src/com/blankj/myself/ArrHeaderTailMax.java index 7ebc46e7..b08fee10 100644 --- a/src/com/blankj/myself/ArrHeaderTailMax.java +++ b/src/com/blankj/myself/ArrHeaderTailMax.java @@ -17,28 +17,46 @@ public static int max(int[] a){ } System.out.println("sum="+sum); - return maxDetail(a,sum,0,a.length-1,0); + //return maxDetail(a,sum,0,a.length-1,0); + + return maxDetail(a,0,a.length-1,0); + } - public static int maxDetail(int[] a,int sum,int leftIndex,int rightIndex,int max){ - int chooseNum = 0; - if(rightIndex-leftIndex>1){ - int leftMax = sum - maxDetail(a,sum-a[leftIndex],leftIndex+1,rightIndex,max); - int rightMax = sum - maxDetail(a,sum-a[rightIndex],leftIndex,rightIndex-1,max); + //public static int maxDetail(int[] a,int sum,int leftIndex,int rightIndex,int max){ + // if(rightIndex-leftIndex>1){ + // int leftMax = sum - maxDetail(a,sum-a[leftIndex],leftIndex+1,rightIndex,max); + // int rightMax = sum - maxDetail(a,sum-a[rightIndex],leftIndex,rightIndex-1,max); + // + // max = max + Math.max(leftMax,rightMax); + // System.out.println("leftMax="+leftMax+", rightMax="+rightMax+", Math.max(leftMax,rightMax)="+Math.max(leftMax,rightMax)); + // System.out.println("max = " + max); + // return max; + // }else { + // System.out.println("leftMax="+a[leftIndex]+", rightMax="+a[rightIndex]+", Math.max(leftMax,rightMax)==== "+Math.max(a[leftIndex],a[rightIndex])); + // return Math.max(a[leftIndex],a[rightIndex]); + // } + //} - chooseNum = Math.max(leftMax,rightMax); - return chooseNum; + public static int maxDetail(int[] a,int leftIndex,int rightIndex,int max){ + if(rightIndex-leftIndex>1){ + int chooseNum = maxDetail(a,leftIndex+1,rightIndex,max)>maxDetail(a,leftIndex,rightIndex-1,max)? + a[rightIndex]:a[leftIndex]; + max = max + chooseNum; + return max; }else { return Math.max(a[leftIndex],a[rightIndex]); } } public static void main(String[] args) { - int v[] = { 1, 2, 3, 6, 9, 5, 7, 4, 2, 6, 9, 5, 8, 7, 2, 1, 55, 3, 6, 9, 7, 5, 2 }; + //int v[] = { 1, 2, 3, 6, 9, 5, 7, 4, 2, 6, 9, 5, 8, 7, 2, 1, 55, 3, 6, 9, 7, 5, 2 }; + int v[] = { 10, 70,3,2,8,900}; + int n = max(v); System.out.println(n); - System.out.println(max2_dync(v)); + //System.out.println(max2_dync(v)); } /** diff --git a/src/com/blankj/myself/PredictTheWinner.java b/src/com/blankj/myself/PredictTheWinner.java new file mode 100644 index 00000000..77938141 --- /dev/null +++ b/src/com/blankj/myself/PredictTheWinner.java @@ -0,0 +1,35 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/1 + */ +public class PredictTheWinner { + public static void main(String[] args) { + int v[] = { 1, 2, 3, 6, 9, 5, 7, 4, 2, 6, 9, 5, 8, 7, 2, 1, 55, 3, 6, 9, 7, 5, 2 }; + PredictTheWinner predictTheWinner = new PredictTheWinner(); + System.out.println(predictTheWinner.PredictTheWinner(v)); + } + + public boolean PredictTheWinner(int[] nums) { + if(nums.length%2==0){ + return true; + } + return predictTheWinnerReal(nums,0,nums.length-1)>=0; + } + + public int predictTheWinnerReal(int[] nums,int l,int r){ + if(l==r){ + return nums[l]; + } + int left = nums[l] - predictTheWinnerReal(nums,l+1,r); + int right = nums[r] - predictTheWinnerReal(nums,l,r-1); + + return Math.max(left,right); + } + +} From 3dae4dbb34a779a5f907922a27c93a765ce35622 Mon Sep 17 00:00:00 2001 From: wb-hjk570755 Date: Fri, 2 Oct 2020 10:01:46 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetIntersectionNode_two_linklist.java | 23 ++++++++++ .../myself/HasCycle_fast_slow_point.java | 42 +++++++++++++++++++ src/com/blankj/myself/HasCycle_hash.java | 36 ++++++++++++++++ .../blankj/myself/PredictTheWinner_Dp.java | 37 ++++++++++++++++ src/com/blankj/myself/StrStr.java | 38 +++++++++++++++++ 5 files changed, 176 insertions(+) create mode 100644 src/com/blankj/myself/GetIntersectionNode_two_linklist.java create mode 100644 src/com/blankj/myself/HasCycle_fast_slow_point.java create mode 100644 src/com/blankj/myself/HasCycle_hash.java create mode 100644 src/com/blankj/myself/PredictTheWinner_Dp.java create mode 100644 src/com/blankj/myself/StrStr.java diff --git a/src/com/blankj/myself/GetIntersectionNode_two_linklist.java b/src/com/blankj/myself/GetIntersectionNode_two_linklist.java new file mode 100644 index 00000000..c2371376 --- /dev/null +++ b/src/com/blankj/myself/GetIntersectionNode_two_linklist.java @@ -0,0 +1,23 @@ +package com.blankj.myself; + +import com.blankj.myself.HasCycle_fast_slow_point.ListNode; + +/** + * Description:leecode 160. 相交链表 + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/2 + */ +public class GetIntersectionNode_two_linklist { + public ListNode getIntersectionNode(ListNode headA, ListNode headB) { + ListNode pA = headA; + ListNode pB = headB; + while (pA!=pB){ + pA = pA==null?headB:pA.next; + pB = pB==null?headA:pB.next; + } + return pA; + } +} diff --git a/src/com/blankj/myself/HasCycle_fast_slow_point.java b/src/com/blankj/myself/HasCycle_fast_slow_point.java new file mode 100644 index 00000000..391dc09e --- /dev/null +++ b/src/com/blankj/myself/HasCycle_fast_slow_point.java @@ -0,0 +1,42 @@ +package com.blankj.myself; + +import java.util.HashSet; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/2 + */ +public class HasCycle_fast_slow_point { + + public boolean hasCycle(ListNode head) { + if(head==null||head.next==null){ + return false; + } + ListNode fast = head; + ListNode slow = head; + while (fast!=null&&fast.next!=null){ + + fast = fast.next.next; + slow = slow.next; + + if(fast == slow){ + return true; + } + + } + return false; + } + + class ListNode { + int val; + ListNode next; + ListNode(int x) { + val = x; + next = null; + } + } +} diff --git a/src/com/blankj/myself/HasCycle_hash.java b/src/com/blankj/myself/HasCycle_hash.java new file mode 100644 index 00000000..75ba70ba --- /dev/null +++ b/src/com/blankj/myself/HasCycle_hash.java @@ -0,0 +1,36 @@ +package com.blankj.myself; + +import java.util.HashSet; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/2 + */ +public class HasCycle_hash { + + public boolean hasCycle(ListNode head) { + HashSet hashSet = new HashSet<>(); + while (head!=null){ + if(hashSet.contains(head)){ + return true; + }else { + hashSet.add(head); + head = head.next; + } + } + return false; + } + + class ListNode { + int val; + ListNode next; + ListNode(int x) { + val = x; + next = null; + } + } +} diff --git a/src/com/blankj/myself/PredictTheWinner_Dp.java b/src/com/blankj/myself/PredictTheWinner_Dp.java new file mode 100644 index 00000000..7ef6370e --- /dev/null +++ b/src/com/blankj/myself/PredictTheWinner_Dp.java @@ -0,0 +1,37 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/1 + */ +public class PredictTheWinner_Dp { + public static void main(String[] args) { + int v[] = { 1, 2, 3, 6, 9, 5, 7, 4, 2, 6, 9, 5, 8, 7, 2, 1, 55, 3, 6, 9, 7, 5, 2 }; + PredictTheWinner_Dp predictTheWinner = new PredictTheWinner_Dp(); + System.out.println(predictTheWinner.PredictTheWinner(v)); + } + + public boolean PredictTheWinner(int[] nums) { + if(nums.length%2==0){ + return true; + } + + int[][] dp = new int[nums.length][nums.length]; + for(int i=0;i=0;i--){ + for (int j=i+1;j=0; + } + + +} diff --git a/src/com/blankj/myself/StrStr.java b/src/com/blankj/myself/StrStr.java new file mode 100644 index 00000000..20150b99 --- /dev/null +++ b/src/com/blankj/myself/StrStr.java @@ -0,0 +1,38 @@ +package com.blankj.myself; + +import java.util.Objects; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/1 + */ +public class StrStr { + public static void main(String[] args) { + StrStr strStr = new StrStr(); + strStr.strStr("mississippi", + "issip"); + } + + public int strStr(String haystack, String needle) { + int hLen = haystack.length(); + int nLen = needle.length(); + + for (int i=0;i Date: Sat, 3 Oct 2020 08:16:57 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/myself/HammingWeight.java | 23 ++++++++++ .../myself/HasCycle_fast_slow_point.java | 4 +- src/com/blankj/myself/KthLargest.java | 34 ++++++++++++++ src/com/blankj/myself/ReverseList.java | 30 +++++++++++++ src/com/blankj/myself/Rotate.java | 45 +++++++++++++++++++ 5 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 src/com/blankj/myself/HammingWeight.java create mode 100644 src/com/blankj/myself/KthLargest.java create mode 100644 src/com/blankj/myself/ReverseList.java create mode 100644 src/com/blankj/myself/Rotate.java diff --git a/src/com/blankj/myself/HammingWeight.java b/src/com/blankj/myself/HammingWeight.java new file mode 100644 index 00000000..70be6598 --- /dev/null +++ b/src/com/blankj/myself/HammingWeight.java @@ -0,0 +1,23 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/2 + */ +public class HammingWeight { + + public int hammingWeight(int n) { + int res = 0; + while(n != 0) { + res += n & 1; + n >>>= 1; + } + return res; + + + } +} diff --git a/src/com/blankj/myself/HasCycle_fast_slow_point.java b/src/com/blankj/myself/HasCycle_fast_slow_point.java index 391dc09e..de831b30 100644 --- a/src/com/blankj/myself/HasCycle_fast_slow_point.java +++ b/src/com/blankj/myself/HasCycle_fast_slow_point.java @@ -31,10 +31,10 @@ public boolean hasCycle(ListNode head) { return false; } - class ListNode { + static class ListNode { int val; ListNode next; - ListNode(int x) { + public ListNode(int x) { val = x; next = null; } diff --git a/src/com/blankj/myself/KthLargest.java b/src/com/blankj/myself/KthLargest.java new file mode 100644 index 00000000..773fd378 --- /dev/null +++ b/src/com/blankj/myself/KthLargest.java @@ -0,0 +1,34 @@ +package com.blankj.myself; + +import com.blankj.myself.InorderTraversal.TreeNode; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/2 + */ +public class KthLargest { + + int resp; + int index; + public int kthLargest(TreeNode root, int k) { + index = k; + dfs(root); + return resp; + } + + public void dfs(TreeNode root){ + if(root==null){ + return ; + } + dfs(root.right); + + if(--index==0){ + resp = root.val; + } + dfs(root.left); + } +} diff --git a/src/com/blankj/myself/ReverseList.java b/src/com/blankj/myself/ReverseList.java new file mode 100644 index 00000000..552ee4bf --- /dev/null +++ b/src/com/blankj/myself/ReverseList.java @@ -0,0 +1,30 @@ +package com.blankj.myself; + +import java.util.Stack; + +import com.blankj.myself.HasCycle_fast_slow_point.ListNode; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/2 + */ +public class ReverseList { + + public ListNode reverseList(ListNode head) { + Stack stack = new Stack(); + while(head!=null){ + stack.push(head.val); + head = head.next; + } + ListNode listNode = new ListNode(stack.pop().intValue()); + while(!stack.isEmpty()){ + listNode.next = new ListNode(stack.pop().intValue()); + } + return listNode; + } + +} diff --git a/src/com/blankj/myself/Rotate.java b/src/com/blankj/myself/Rotate.java new file mode 100644 index 00000000..fea1bfc6 --- /dev/null +++ b/src/com/blankj/myself/Rotate.java @@ -0,0 +1,45 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/2 + */ +public class Rotate { + + public static void main(String[] args) { + int[] a = {1,2,3,4,5,6,7}; + Rotate rotate = new Rotate(); + rotate.rotate(a,3); + } + + public void rotate(int[] nums, int k) { + + for(int i=0;i=0;j--){ + if(j==0){ + nums[j] = temp; + }else{ + nums[j] = nums[j-1]; + } + } + } + //int[] temps = new int[k]; + //for(int i=nums.length-k;i<=nums.length-1;i++){ + // temps[i+k-nums.length]=nums[i]; + //} + //for(int j=nums.length-1;j>=0;j--){ + // if(j>=k){ + // nums[j]=nums[j-k]; + // }else{ + // nums[j]=temps[j]; + // } + //} + + } + +} From cbc65a3210945de5266c74b1284cd6685a697409 Mon Sep 17 00:00:00 2001 From: wb-hjk570755 Date: Sat, 3 Oct 2020 11:09:39 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E4=B8=AD=20=E8=BF=9E=E7=BB=AD=E7=9A=84=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/myself/GetKthFromEnd.java | 67 ++++++++++++++++++++++++ src/com/blankj/myself/MaxSubArray.java | 21 ++++++++ src/com/blankj/myself/MergeTwoLists.java | 36 +++++++++++++ src/com/blankj/myself/TreeBFS.java | 46 ++++++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 src/com/blankj/myself/GetKthFromEnd.java create mode 100644 src/com/blankj/myself/MaxSubArray.java create mode 100644 src/com/blankj/myself/MergeTwoLists.java create mode 100644 src/com/blankj/myself/TreeBFS.java diff --git a/src/com/blankj/myself/GetKthFromEnd.java b/src/com/blankj/myself/GetKthFromEnd.java new file mode 100644 index 00000000..f5723fce --- /dev/null +++ b/src/com/blankj/myself/GetKthFromEnd.java @@ -0,0 +1,67 @@ +package com.blankj.myself; + +import com.blankj.myself.HasCycle_fast_slow_point.ListNode; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/3 + */ +public class GetKthFromEnd { + public static void main(String[] args) { + ListNode head = new ListNode(1); + ListNode tail = null; + + //head.next=new ListNode(2); + //head.next.next=new ListNode(3); + //head.next.next.next=new ListNode(4); + //head.next.next.next.next=new ListNode(5); + + for (int i=1;i<5;i++){ + if(tail==null){ + tail = new ListNode(i+1); + head.next = tail; + }else { + tail.next = new ListNode(i+1); + tail = tail.next; + } + + } + + GetKthFromEnd getKthFromEnd = new GetKthFromEnd(); + getKthFromEnd.getKthFromEnd(head,2); + + + } + + public ListNode getKthFromEnd(ListNode head, int k) { + int size = 0; + ListNode headSecond = head; + while(head!=null){ + head = head.next; + size = size + 1; + } + ListNode res = null; + ListNode temp = null; + int index = 0; + while(headSecond!=null){ + + index = index + 1; + if(size-k> levelOrder(TreeNode root) { + List> res = new ArrayList<>(); + if(root==null){ + return res; + } + ArrayDeque queue = new ArrayDeque(); + queue.add(root); + + while (queue.peek()!=null){ + List temp = new ArrayList<>(); + int size = queue.size(); + for (int i=0;i Date: Thu, 8 Oct 2020 20:41:00 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E4=B8=AD=20=E8=BF=9E=E7=BB=AD=E7=9A=84=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/myself/AddTwoNumbers.java | 47 ++++++++++++++++++++++++ src/com/blankj/myself/CountAndSay.java | 30 +++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 src/com/blankj/myself/AddTwoNumbers.java create mode 100644 src/com/blankj/myself/CountAndSay.java diff --git a/src/com/blankj/myself/AddTwoNumbers.java b/src/com/blankj/myself/AddTwoNumbers.java new file mode 100644 index 00000000..7bbe47f2 --- /dev/null +++ b/src/com/blankj/myself/AddTwoNumbers.java @@ -0,0 +1,47 @@ +package com.blankj.myself; + +import com.blankj.myself.HasCycle_fast_slow_point.ListNode; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/3 + */ +public class AddTwoNumbers { + + public ListNode addTwoNumbers(ListNode l1, ListNode l2) { + ListNode res = new ListNode(0); + ListNode curr = res; + int x,y,unit,carry=0; + while (l1!=null||l2!=null){ + x = (l1==null?0:l1.val); + y = (l2==null?0:l2.val); + + + unit = (x + y + carry)%10 ; + + curr.next = new ListNode(unit); + carry = (x + y + carry)/10; + + if(l1!=null){ + l1=l1.next; + } + + if(l2!=null){ + l2=l2.next; + } + + curr = curr.next; + + } + + if(carry!=0){ + curr.next = new ListNode(carry); + } + + return res.next; + } +} diff --git a/src/com/blankj/myself/CountAndSay.java b/src/com/blankj/myself/CountAndSay.java new file mode 100644 index 00000000..d29c4682 --- /dev/null +++ b/src/com/blankj/myself/CountAndSay.java @@ -0,0 +1,30 @@ +package com.blankj.myself; + +/** + * Description: + * Copyright: Copyright (c) 2012 + * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. + * + * @author huangjk + * @version 1.0 2020/10/3 + */ +public class CountAndSay { + public String countAndSay(int n) { + StringBuilder res = new StringBuilder("1"); + for(int i=1;i<=n;i++){ + char[] tempArr = res.toString().toCharArray(); + char temp; + int k=0; + res = new StringBuilder(); + for (int j=0;j Date: Sat, 10 Oct 2020 09:41:06 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E4=B8=AD=20=E8=BF=9E=E7=BB=AD=E7=9A=84=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/blankj/myself/ThreeSum.java | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/com/blankj/myself/ThreeSum.java b/src/com/blankj/myself/ThreeSum.java index a37ce52d..17f83cc5 100644 --- a/src/com/blankj/myself/ThreeSum.java +++ b/src/com/blankj/myself/ThreeSum.java @@ -5,13 +5,36 @@ import java.util.List; /** - * Description: + * Description:三数之和 * Copyright: Copyright (c) 2012 * Company: keruyun Technology(Beijing) Chengdu Co. Ltd. * * @author huangjk * @version 1.0 2020/9/21 */ + +/** + * 15. 三数之和 + * 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 + + 注意:答案中不可以包含重复的三元组。 + +   + + 示例: + + 给定数组 nums = [-1, 0, 1, 2, -1, -4], + + 满足要求的三元组集合为: + [ + [-1, 0, 1], + [-1, -1, 2] + ] + + 来源:力扣(LeetCode) + 链接:https://leetcode-cn.com/problems/3sum + 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 + */ public class ThreeSum { public List> threeSum(int[] nums) { List> result = new ArrayList<>();