添加 0411 测试题,格雷数组

This commit is contained in:
Yucheng Hu 2018-12-15 12:31:16 -05:00
parent 688f755d3e
commit ab78a6dab5

View File

@ -1,251 +1,316 @@
package com.ossez.lang.tutorial.tests; package com.ossez.lang.tutorial.tests;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.LinkedList;
import java.util.TreeSet; import java.util.List;
import java.util.regex.Matcher; import java.util.TreeSet;
import java.util.regex.Pattern; import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Test;
import org.slf4j.Logger; import javax.management.ListenerNotFoundException;
import org.slf4j.LoggerFactory;
import org.junit.Test;
/** import org.slf4j.Logger;
* import org.slf4j.LoggerFactory;
* @author YuCheng
* import com.ossez.lang.tutorial.models.ListNode;
*/
public class LintcodeTest { /**
*
private final static Logger logger = LoggerFactory.getLogger(LintcodeTest.class); * @author YuCheng
*
/** */
* 53 https://www.lintcode.com/problem/reverse-words-in-a-string/description public class LintcodeTest {
*/
@Test private final static Logger logger = LoggerFactory.getLogger(LintcodeTest.class);
public void test0053ReverseWords() {
/**
String s = " Life doesn't always give us the joys we want."; * 35 https://www.lintcode.com/problem/reverse-linked-list/description
*/
String retStr = ""; @Test
String[] inStr = s.split(" "); public void test0035Reverse() {
// INIT LINKED LIST
for (int i = inStr.length - 1; i >= 0; i--) { ListNode head = new ListNode(1);
String cStr = inStr[i].trim(); head.next = new ListNode(2);
if (!cStr.isEmpty()) { head.next.next = new ListNode(3);
retStr = retStr + " " + cStr;
} // CHECK BEFORE
} System.out.println(head.val);
retStr = retStr.trim(); System.out.println(head.next.val);
System.out.println(retStr); System.out.println(head.next.next.val);
// return retStr;
} // REVERSE
ListNode prev = null;
/** while (head != null) {
* 56 https://www.lintcode.com/problem/two-sum/description ListNode temp = head.next;
*/ head.next = prev;
@Test prev = head;
public void test0056TwoSum() { head = temp;
int[] numbers = { 2, 7, 11, 15 }; }
int target = 9;
// CHECK AFTER
int[] retArray = new int[2]; System.out.println(prev.val);
System.out.println(prev.next.val);
for (int i = 0; i < numbers.length; i++) { System.out.println(prev.next.next.val);
int intA = numbers[i]; }
int intB = 0;
/**
for (int j = 1 + i; j < numbers.length; j++) { * 1480 https://www.lintcode.com/problem/dot-product/description
intB = numbers[j]; */
// SUM CHECK @Test
if (target == intA + intB && i < j) { public void test0044minSubArray() {
retArray[0] = i;
retArray[1] = j; List<Integer> nums = new ArrayList<Integer>();
break; nums.add(1);
} nums.add(1);
}
} int min_ending_here = 0;
int retStatus = 0;
System.out.println(Arrays.toString(retArray));
} for (int i = 0; i < nums.size(); i++) {
if (min_ending_here > 0) {
/** min_ending_here = nums.get(i);
* 209 https://www.lintcode.com/problem/first-unique-character-in-a-string } else {
*/ min_ending_here += nums.get(i);
@Test }
public void test0209FirstUniqChar() { retStatus = Math.min(retStatus, min_ending_here);
String str = "ddjdz"; }
char retStatus = 0; System.out.println(retStatus);
// 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))) { * 53 https://www.lintcode.com/problem/reverse-words-in-a-string/description
retStatus = c; */
break; @Test
} public void test0053ReverseWords() {
str = str.replaceAll(Character.toString(c), "");
} String s = " Life doesn't always give us the joys we want.";
System.out.println("" + retStatus); String retStr = "";
} String[] inStr = s.split(" ");
/** for (int i = inStr.length - 1; i >= 0; i--) {
* 1480 https://www.lintcode.com/problem/dot-product/description String cStr = inStr[i].trim();
*/ if (!cStr.isEmpty()) {
@Test retStr = retStr + " " + cStr;
public void test0423IsValidParentheses() { }
String s = "([)]"; }
retStr = retStr.trim();
boolean retStatus = false; System.out.println(retStr);
for (int i = 0; i < 3; i++) { // return retStr;
s = s.replace("()", ""); }
s = s.replace("{}", "");
s = s.replace("[]", ""); /**
* 56 https://www.lintcode.com/problem/two-sum/description
if (s.length() == 0) { */
retStatus = true; @Test
break; public void test0056TwoSum() {
} int[] numbers = { 2, 7, 11, 15 };
} int target = 9;
System.out.println(retStatus); int[] retArray = new int[2];
} for (int i = 0; i < numbers.length; i++) {
int intA = numbers[i];
/** int intB = 0;
* 646 https://www.lintcode.com/problem/first-position-unique-character/description
*/ for (int j = 1 + i; j < numbers.length; j++) {
@Test intB = numbers[j];
public void test0646FirstUniqChar() { // SUM CHECK
String s = "saau"; if (target == intA + intB && i < j) {
retArray[0] = i;
int retStatus = -1; retArray[1] = j;
boolean breakLoop = false; break;
}
int[] iArray = new int[256]; }
}
// NULL CHECK
if (s == null || s.length() == 0) { System.out.println(Arrays.toString(retArray));
retStatus = -1; }
}
/**
// LOOP CHECK * 209 https://www.lintcode.com/problem/first-unique-character-in-a-string
for (char c : s.toCharArray()) { */
iArray[c]++; @Test
} public void test0209FirstUniqChar() {
for (int i = 0; i < s.length(); i++) { String str = "ddjdz";
if (iArray[s.charAt(i)] == 1) {
retStatus = i; char retStatus = 0;
breakLoop = true;
break; // 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))) {
// LOOP BREAK CHECK retStatus = c;
if (!breakLoop) { break;
retStatus = -1; }
} str = str.replaceAll(Character.toString(c), "");
}
System.out.println(retStatus);
} System.out.println("" + retStatus);
}
/**
* 767 https://www.lintcode.com/problem/reverse-array/description /**
*/ * 411
@Test *
public void test0767ReverseArray() { * <p>
int[] nums = { 1, 2, 3, 4, 5, 6, 7 }; * <ul>
* <li>@see
for (int i = 0; i < nums.length / 2; i++) { * <a href="https://www.cwiki.us/display/ITCLASSIFICATION/Gray+Code">https://www.cwiki.us/display/ITCLASSIFICATION/Gray+Code</a>
int tmp = nums[i]; * <li>@see<a href="https://www.lintcode.com/problem/gray-code/description">https://www.lintcode.com/problem/gray-code/description</a>
nums[i] = nums[nums.length - 1 - i]; * </ul>
nums[nums.length - 1 - i] = tmp; * </p>
} *
*/
System.out.println(Arrays.toString(nums)); @Test
public void test0411GrayCode() {
} int n = 2;
/** List<Integer> retArray = new ArrayList<>();
* 1480 https://www.lintcode.com/problem/dot-product/description
*/ if (n == 0) {
@Test retArray.add(0);
public void test1377findSubstring() { }
String str = "";
int k = 5; for (int i = 0; i < (2 << (n - 1)); i++) {
int g = i ^ (i / 2);
HashSet<String> strSet = new HashSet<String>(); retArray.add(g);
}
for (int i = 0; i <= str.length() - k; i++) {
String subStr = str.substring(i, i + k); System.out.println(retArray);
}
String pattern = ".*(.).*\\1.*";
/**
Pattern r = Pattern.compile(pattern); * 1480 https://www.lintcode.com/problem/dot-product/description
*/
Matcher m = r.matcher(subStr); @Test
if (!m.find()) { public void test0423IsValidParentheses() {
strSet.add(subStr); String s = "([)]";
}
boolean retStatus = false;
} for (int i = 0; i < 3; i++) {
s = s.replace("()", "");
System.out.println(strSet.size()); s = s.replace("{}", "");
} s = s.replace("[]", "");
/** if (s.length() == 0) {
* 1480 https://www.lintcode.com/problem/dot-product/description retStatus = true;
*/ break;
@Test }
public void test1480dotProduct() { }
int[] A = { 1, 1, -1 };
int[] B = { 2147483647, 1, 3 }; System.out.println(retStatus);
int retStatus = 0; }
// LENGTH CHECK /**
if (A.length == 0 || B.length == 0 || A.length != B.length) * 646 https://www.lintcode.com/problem/first-position-unique-character/description
retStatus = -1; */
@Test
// ADDED public void test0646FirstUniqChar() {
if (retStatus != -1) { String s = "saau";
for (int i = 0; i < A.length; i++) {
retStatus = retStatus + A[i] * B[i]; int retStatus = -1;
} boolean breakLoop = false;
}
int[] iArray = new int[256];
System.out.println(retStatus);
} // NULL CHECK
if (s == null || s.length() == 0) {
/** retStatus = -1;
* 1480 https://www.lintcode.com/problem/dot-product/description }
*/
@Test // LOOP CHECK
public void test0044minSubArray() { for (char c : s.toCharArray()) {
iArray[c]++;
List<Integer> nums = new ArrayList<Integer>(); }
nums.add(1); for (int i = 0; i < s.length(); i++) {
nums.add(1); if (iArray[s.charAt(i)] == 1) {
retStatus = i;
int min_ending_here = 0; breakLoop = true;
int retStatus = 0; break;
}
for (int i = 0; i < nums.size(); i++) { }
if (min_ending_here > 0) {
min_ending_here = nums.get(i); // LOOP BREAK CHECK
} else { if (!breakLoop) {
min_ending_here += nums.get(i); retStatus = -1;
} }
retStatus = Math.min(retStatus, min_ending_here);
} System.out.println(retStatus);
}
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<String> strSet = new HashSet<String>();
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());
}
/**
* 1480 https://www.lintcode.com/problem/dot-product/description
*/
@Test
public void test1480dotProduct() {
int[] A = { 1, 1, -1 };
int[] B = { 2147483647, 1, 3 };
int retStatus = 0;
// LENGTH CHECK
if (A.length == 0 || B.length == 0 || A.length != B.length)
retStatus = -1;
// ADDED
if (retStatus != -1) {
for (int i = 0; i < A.length; i++) {
retStatus = retStatus + A[i] * B[i];
}
}
System.out.println(retStatus);
}
}