3201
This commit is contained in:
11
include/solution/3201.h
Normal file
11
include/solution/3201.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef INC_3201_H
|
||||
#define INC_3201_H
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
int maximumLength(int *nums, int numsSize);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
13
src/3201.c
Normal file
13
src/3201.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <solution/3201.h>
|
||||
|
||||
#define max(x, y) ((x) > (y) ? (x) : (y))
|
||||
|
||||
int maximumLength(int *nums, int numsSize)
|
||||
{
|
||||
int odd = 0, even = 0, odd_cnt = 0;
|
||||
|
||||
for (int i = 0; i < numsSize; i++)
|
||||
nums[i] & 1 ? (odd = even + 1, odd_cnt++) : (even = odd + 1);
|
||||
|
||||
return max(max(even, odd), max(odd_cnt, numsSize - odd_cnt));
|
||||
}
|
||||
38
tests/test_3201.cpp
Normal file
38
tests/test_3201.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <solution/3201.h>
|
||||
|
||||
class MaximumLengthTest : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
// 提供统一断言接口
|
||||
void AssertMaximumLength(const std::vector<int> &input, int expected)
|
||||
{
|
||||
int *arr = const_cast<int *>(input.data());
|
||||
int result = maximumLength(arr, input.size());
|
||||
EXPECT_EQ(result, expected);
|
||||
}
|
||||
};
|
||||
|
||||
// 示例 1:输入 [1,2,3,4],输出 4
|
||||
TEST_F(MaximumLengthTest, IncreasingSequence)
|
||||
{
|
||||
AssertMaximumLength({1, 2, 3, 4}, 4);
|
||||
}
|
||||
|
||||
// 示例 2:输入 [1,2,1,1,2,1,2],输出 6
|
||||
TEST_F(MaximumLengthTest, AlternatingSequence)
|
||||
{
|
||||
AssertMaximumLength({1, 2, 1, 1, 2, 1, 2}, 6);
|
||||
}
|
||||
|
||||
// 示例 3:输入 [1,3],输出 2
|
||||
TEST_F(MaximumLengthTest, ShortSequence)
|
||||
{
|
||||
AssertMaximumLength({1, 3}, 2);
|
||||
}
|
||||
|
||||
// 示例 4:输入 [4,51,68],输出 3
|
||||
TEST_F(MaximumLengthTest, TEST4)
|
||||
{
|
||||
AssertMaximumLength({4, 51, 68}, 3);
|
||||
}
|
||||
Reference in New Issue
Block a user