diff --git a/leetcode_java/src/main/java/dev/workSpace4.java b/leetcode_java/src/main/java/dev/workSpace4.java index 327a88a3..8a46a971 100644 --- a/leetcode_java/src/main/java/dev/workSpace4.java +++ b/leetcode_java/src/main/java/dev/workSpace4.java @@ -1,5 +1,6 @@ package dev; +import java.lang.reflect.Array; import java.util.*; import java.util.stream.Collectors; @@ -432,6 +433,13 @@ public int compare(Integer o1, Integer o2) { System.out.println(z_); } + System.out.println("array to str test --------------"); + List mystr99 = new ArrayList<>(); + mystr99.add("a"); + mystr99.add("b"); + mystr99.add("c"); + System.out.println(Arrays.toString(mystr99.toArray())); + } private static int getDays(List weightsList, int speed){ diff --git a/leetcode_java/src/main/java/dev/workspace5.java b/leetcode_java/src/main/java/dev/workspace5.java index d1419acd..891e0da2 100644 --- a/leetcode_java/src/main/java/dev/workspace5.java +++ b/leetcode_java/src/main/java/dev/workspace5.java @@ -212,87 +212,140 @@ private int getDays(List weightsList, int speed){ * */ public int minAreaRect(int[][] points) { - // edge case -// if (points.length == 0 && points[0].length == 0){ -// return 0; -// } - if (points.length == 1 || points[0].length == 1) { - return points.length * points[0].length; - } - // init - int x_len = 0; - int y_len = 0; - // find min x_len and min y_len - return x_len * y_len; + return 0; } - // LC 1087 - // https://leetcode.ca/2018-11-21-1087-Brace-Expansion/ - // 5.02 pm - 5.20 pm -// public static void main(String[] args) { -// System.out.println(this.expand(s)); +// public int minAreaRect(int[][] points) { +// // edge case +//// if (points.length == 0 && points[0].length == 0){ +//// return 0; +//// } +// if (points.length == 1 || points[0].length == 1) { +// return points.length * points[0].length; +// } +// // init +// int x_len = 0; +// int y_len = 0; +// // find min x_len and min y_len +// +// return x_len * y_len; // } + // LC 1087 + // https://leetcode.ca/2018-11-21-1087-Brace-Expansion/ + // 6.19 pm - 6.30 pm + // TODO : implement, validate List collected = new ArrayList<>(); - List regular = new ArrayList<>(); public String[] expand(String s) { - - // no possible to have bracket ("{}") if (s.length() < 3){ return new String[]{s}; } - List candidates = new ArrayList<>(); - for (String x : s.split("")){ - Queue q = new LinkedList<>(); - boolean tooAdd = false; - if (x == "{"){ - tooAdd = true; - break; - } - else if (!tooAdd){ - q.add(x); - break; - } - else if (x == "}"){ - tooAdd = false; - StringBuilder sb = new StringBuilder(); - while(!q.isEmpty()){ - sb.append(q.poll()); - candidates.add(sb.toString()); - } - }else{ - } - - - } + // prepare list - // dfs - //List collected = new ArrayList<>(); - String[] x= (String[]) collected.toArray(); - // order with lexicographical + // dfs (backtrack) + //String[] x = new String[]{}; + return null; + } - return (String[]) collected.toArray(); // TODO : double check + private List getCandidates(String s){ + return null; } - int strLen = 5; // TODO : fix - private void dfs(List regular, List candidates, int startIdx, String cur){ - if (candidates.size()==0){ - return; + private void backtrack(int startIdx, List candidates, List cur){ + if (cur.size() == candidates.size()){ + StringBuilder sb = new StringBuilder(); + for (String x : cur){ + sb.append(x); + } + String str = sb.toString(); + if (!this.collected.contains(str)){ + this.collected.add(str); + } } - if (cur.length() == strLen){ - this.collected.add(cur); - cur = ""; + if (cur.size() > candidates.size()){ return; } - if (cur.length() > strLen){ - cur = ""; - return; + // ??? check + for (int i = startIdx; i < candidates.size(); i++){ + // update cur + cur.add(candidates.get(i)); + // recursive + this.backtrack(i, candidates, cur); + // undo + cur.remove(cur.size()-1); } - } + + + + + // 5.02 pm - 5.20 pm +// public static void main(String[] args) { +// System.out.println(this.expand(s)); +// } + +// List collected = new ArrayList<>(); +// List regular = new ArrayList<>(); +// public String[] expand(String s) { +// +// // no possible to have bracket ("{}") +// if (s.length() < 3){ +// return new String[]{s}; +// } +// List candidates = new ArrayList<>(); +// for (String x : s.split("")){ +// Queue q = new LinkedList<>(); +// boolean tooAdd = false; +// if (x == "{"){ +// tooAdd = true; +// break; +// } +// else if (!tooAdd){ +// q.add(x); +// break; +// } +// else if (x == "}"){ +// tooAdd = false; +// StringBuilder sb = new StringBuilder(); +// while(!q.isEmpty()){ +// sb.append(q.poll()); +// candidates.add(sb.toString()); +// } +// }else{ +// } +// +// +// } +// +// +// // dfs +// //List collected = new ArrayList<>(); +// String[] x= (String[]) collected.toArray(); +// // order with lexicographical +// +// return (String[]) collected.toArray(); // TODO : double check +// } +// +// int strLen = 5; // TODO : fix +// private void dfs(List regular, List candidates, int startIdx, String cur){ +// if (candidates.size()==0){ +// return; +// } +// if (cur.length() == strLen){ +// this.collected.add(cur); +// cur = ""; +// return; +// } +// if (cur.length() > strLen){ +// cur = ""; +// return; +// } +// +// } + // LC 981 // https://leetcode.com/problems/time-based-key-value-store/ // 4.25 pm