From dd15b81b3a11ef56e4b2ae922032691337a9d130 Mon Sep 17 00:00:00 2001 From: Yucheng Hu Date: Sat, 29 Dec 2018 01:03:01 -0500 Subject: [PATCH] =?UTF-8?q?=E6=89=BE=E5=88=B0=E5=90=88=E9=80=82=E5=9F=8E?= =?UTF-8?q?=E5=A0=A1=E7=9A=84=E5=9C=B0=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codebank/interview/tests/WayfairTest.java | 370 ++++-------------- 1 file changed, 77 insertions(+), 293 deletions(-) diff --git a/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java b/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java index 49c9996dbb..bee5b9b61c 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java +++ b/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java @@ -1,293 +1,77 @@ -package com.ossez.codebank.interview.tests; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.TreeSet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.management.ListenerNotFoundException; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.ossez.codebank.algorithm.models.ListNode; - -/** - * - * @author YuCheng - * - */ -public class WayfairTest { - - private final static Logger logger = LoggerFactory.getLogger(WayfairTest.class); - - /** - * 35 https://www.lintcode.com/problem/reverse-linked-list/description - */ - @Test - public void test0035Reverse() { - // INIT LINKED LIST - ListNode head = new ListNode(1); - head.next = new ListNode(2); - head.next.next = new ListNode(3); - - // CHECK BEFORE - System.out.println(head.val); - System.out.println(head.next.val); - System.out.println(head.next.next.val); - - // REVERSE - ListNode prev = null; - while (head != null) { - ListNode temp = head.next; - head.next = prev; - prev = head; - head = temp; - } - - // CHECK AFTER - System.out.println(prev.val); - System.out.println(prev.next.val); - System.out.println(prev.next.next.val); - } - - /** - * 1480 https://www.lintcode.com/problem/dot-product/description - */ - @Test - public void test0044minSubArray() { - - List nums = new ArrayList(); - nums.add(1); - nums.add(1); - - int min_ending_here = 0; - int retStatus = 0; - - for (int i = 0; i < nums.size(); i++) { - if (min_ending_here > 0) { - min_ending_here = nums.get(i); - } else { - min_ending_here += nums.get(i); - } - retStatus = Math.min(retStatus, min_ending_here); - } - - System.out.println(retStatus); - - } - - /** - * 53 https://www.lintcode.com/problem/reverse-words-in-a-string/description - */ - @Test - public void test0053ReverseWords() { - - String s = " Life doesn't always give us the joys we want."; - - String retStr = ""; - String[] inStr = s.split(" "); - - for (int i = inStr.length - 1; i >= 0; i--) { - String cStr = inStr[i].trim(); - if (!cStr.isEmpty()) { - retStr = retStr + " " + cStr; - } - } - retStr = retStr.trim(); - System.out.println(retStr); - // return retStr; - } - - /** - * 56 https://www.lintcode.com/problem/two-sum/description - */ - @Test - public void test0056TwoSum() { - int[] numbers = { 2, 7, 11, 15 }; - int target = 9; - - int[] retArray = new int[2]; - - for (int i = 0; i < numbers.length; i++) { - int intA = numbers[i]; - int intB = 0; - - for (int j = 1 + i; j < numbers.length; j++) { - intB = numbers[j]; - // SUM CHECK - if (target == intA + intB && i < j) { - retArray[0] = i; - retArray[1] = j; - break; - } - } - } - - System.out.println(Arrays.toString(retArray)); - } - - /** - * 209 https://www.lintcode.com/problem/first-unique-character-in-a-string - */ - @Test - public void test0209FirstUniqChar() { - String str = "ddjdz"; - - char retStatus = 0; - - // LOOP CHECK - for (int i = 0; i < 30; i++) { - char c = str.charAt(0); - if (str.indexOf(Character.toString(c)) == str.lastIndexOf(Character.toString(c))) { - retStatus = c; - break; - } - str = str.replaceAll(Character.toString(c), ""); - } - - System.out.println("" + retStatus); - } - - /** - * 411 - * - *

- *

- *

- * - */ - @Test - public void test0411GrayCode() { - int n = 2; - - List retArray = new ArrayList<>(); - - if (n == 0) { - retArray.add(0); - } - - for (int i = 0; i < (2 << (n - 1)); i++) { - int g = i ^ (i / 2); - retArray.add(g); - } - - System.out.println(retArray); - } - - /** - * 1480 https://www.lintcode.com/problem/dot-product/description - */ - @Test - public void test0423IsValidParentheses() { - String s = "([)]"; - - boolean retStatus = false; - for (int i = 0; i < 3; i++) { - s = s.replace("()", ""); - s = s.replace("{}", ""); - s = s.replace("[]", ""); - - if (s.length() == 0) { - retStatus = true; - break; - } - } - - System.out.println(retStatus); - - } - - /** - * 646 https://www.lintcode.com/problem/first-position-unique-character/description - */ - @Test - public void test0646FirstUniqChar() { - String s = "saau"; - - int retStatus = -1; - boolean breakLoop = false; - - int[] iArray = new int[256]; - - // NULL CHECK - if (s == null || s.length() == 0) { - retStatus = -1; - } - - // LOOP CHECK - for (char c : s.toCharArray()) { - iArray[c]++; - } - for (int i = 0; i < s.length(); i++) { - if (iArray[s.charAt(i)] == 1) { - retStatus = i; - breakLoop = true; - break; - } - } - - // LOOP BREAK CHECK - if (!breakLoop) { - retStatus = -1; - } - - System.out.println(retStatus); - } - - /** - * 767 https://www.lintcode.com/problem/reverse-array/description - */ - @Test - public void test0767ReverseArray() { - int[] nums = { 1, 2, 3, 4, 5, 6, 7 }; - - for (int i = 0; i < nums.length / 2; i++) { - int tmp = nums[i]; - nums[i] = nums[nums.length - 1 - i]; - nums[nums.length - 1 - i] = tmp; - } - - System.out.println(Arrays.toString(nums)); - - } - - /** - * 1480 https://www.lintcode.com/problem/dot-product/description - */ - @Test - public void test1377findSubstring() { - String str = ""; - int k = 5; - - HashSet strSet = new HashSet(); - - for (int i = 0; i <= str.length() - k; i++) { - String subStr = str.substring(i, i + k); - - String pattern = ".*(.).*\\1.*"; - - Pattern r = Pattern.compile(pattern); - - Matcher m = r.matcher(subStr); - if (!m.find()) { - strSet.add(subStr); - } - - } - - System.out.println(strSet.size()); - } - -} +package com.ossez.codebank.interview.tests; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * For Wayfair + * + * @author YuCheng + * + */ +public class WayfairTest { + + private final static Logger logger = LoggerFactory.getLogger(WayfairTest.class); + + /** + * https://www.cwiki.us/display/ITCLASSIFICATION/Build+Castles + */ + @Test + public void testBuildCastles() { + + // int[] A = { -3, -3 }; + int[] A = { 2, 2, 3, 4, 3, 3, 2, 2, 1, 1, 2, 5 }; + + int h = 0; + int v = 0; + + List nList = new ArrayList(); + + // Rebuild List + nList.add(A[0]); + for (int i = 0; i < A.length - 1; i++) { + + if (A[i] != A[i + 1]) { + nList.add(A[i + 1]); + } + + } + + // LOOP List to find right location + for (int i = 0; i < nList.size() - 1; i++) { + + // COUNT 0 + if (i == 0) { + if (nList.get(i) < nList.get(i + 1)) { + v++; + } + } else { + if (nList.get(i) < nList.get(i - 1) && nList.get(i) < nList.get(i + 1)) { + v++; + } + + if (nList.get(i) > nList.get(i - 1) && nList.get(i) > nList.get(i + 1)) { + h++; + } + } + } + + if (nList.size() == 1) { + h++; + } else if (nList.size() > 2 && nList.get(nList.size() - 1) > nList.get(nList.size() - 2)) { + h++; + } + + // CHECK + logger.debug("V - [{}]", v); + logger.debug("H - [{}]", h); + + logger.debug("H + V - [{}]", (h + v)); + + } + +}