題目
給定一個整數(shù)數(shù)組。
返回一個數(shù)組,其中第一個元素是正數(shù)的個數(shù)温兼,第二個元素是負(fù)數(shù)的總和。
如果輸入數(shù)組為空或空武契,則返回一個空數(shù)組:
-
Java:
new int[] {}
/new int[0]
;
注意募判!
傳遞的數(shù)組不應(yīng)該改變荡含。在這里閱讀更多。
例如:
input int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -11, -12, -13, -14, -15}
return int[] {10, -65}.
測試用例:
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.runners.JUnit4;
public class KataTests {
@Test
public void countPositivesSumNegatives_BasicTest() {
int[] expectedResult = new int[] {10, -65};
assertArrayEquals(expectedResult, Kata.countPositivesSumNegatives(new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -11, -12, -13, -14, -15}));
}
@Test
public void countPositivesSumNegatives_InputWithZeroes() {
int[] expectedResult = new int[] {8, -50};
assertArrayEquals(expectedResult, Kata.countPositivesSumNegatives(new int[] {0, 2, 3, 0, 5, 6, 7, 8, 9, 10, -11, -12, -13, -14}));
}
}
解答
我的:
public class Kata{
public static int[] countPositivesSumNegatives(int[] input) {
if (input == null || input.length == 0) {
return new int[0];
}
int posNum = 0;
int negSum = 0;
for (int i : input) {
if (i > 0) {
posNum ++;
} else if (i < 0) {
negSum += i;
}
}
return new int[]{posNum, negSum};
}
}
別人的:
- 常規(guī)版
public class Kata
{
public static int[] countPositivesSumNegatives(int[] input)
{
if (input == null || input.length == 0) return new int[] {};
int count = 0,sum = 0;
for (int i : input) {
if (i > 0) count ++;
if (i < 0) sum += i;
}
return new int[] {count,sum};
}
}
這次我的和別人的差不多了届垫。
- stream版
import java.util.stream.*;
public class Kata {
public static int[] countPositivesSumNegatives(int[] input) {
return input == null || input.length == 0 ?
new int[0] :
new int[] { (int)IntStream.of(input).filter(i->i>0).count(), IntStream.of(input).filter(i->i<0).sum() };
}
}
思考
學(xué)習(xí)別人好的編程思路很重要释液。