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));
+
+ }
+
+}