diff --git a/.gitignore b/.gitignore index 63ec9e4..ca8cd71 100644 --- a/.gitignore +++ b/.gitignore @@ -166,3 +166,7 @@ Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/1a1702b241b62b26/19_MYSQRT.ipch Alogrithm/.vs/Alogrithm/v16/TestStore/0/005.testlog Alogrithm/Alogrithm/Debug/19_MySqrt.obj Alogrithm/UnitTest/Debug/UnitTest.tlog/link.16016.delete.1.tlog +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/85aeac5e7d03af9f/20_MOVEZEROES.ipch +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/b02cd44cfc574591/20_MOVEZEROES.ipch +Alogrithm/Alogrithm/Debug/20_MoveZeroes.obj +Alogrithm/UnitTest/Debug/UnitTest.tlog/link.7728.delete.1.tlog diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo index 81b6608..f4551ac 100644 Binary files a/Alogrithm/.vs/Alogrithm/v16/.suo and b/Alogrithm/.vs/Alogrithm/v16/.suo differ diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj b/Alogrithm/Alogrithm/Alogrithm.vcxproj index 34d1acd..56ea826 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj @@ -151,6 +151,7 @@ + @@ -172,6 +173,7 @@ + @@ -192,6 +194,7 @@ + diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters index 29cb51a..62abcdf 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters @@ -81,6 +81,9 @@ 源文件\src + + 源文件\src + @@ -137,6 +140,9 @@ 头文件\include + + 头文件\include + @@ -193,5 +199,8 @@ 资源文件\config + + 资源文件\config + \ No newline at end of file diff --git a/Alogrithm/Alogrithm/config/20_MoveZeroes.ini b/Alogrithm/Alogrithm/config/20_MoveZeroes.ini new file mode 100644 index 0000000..dac7db9 --- /dev/null +++ b/Alogrithm/Alogrithm/config/20_MoveZeroes.ini @@ -0,0 +1,21 @@ +[Test1] +Input=0,1,0,3,12 +Output=1,3,12,0,0 +[Test2] +Input=0,1,1,3,0,1 +Output=1,1,3,1,0,0 +[Test3] +Input=0 +Output=0 +[Test4] +Input=0,1 +Output=1,0 +[Test5] +Input=0,1,0,2,0,3,0,4,0,5,0,6 +Output=1,2,3,4,5,6,0,0,0,0,0,0 +[Test6] +Input=1,1,0,1,3,3,1,0 +Output=1,1,1,3,3,1,0,0 +[Test7] +Input=0,1,1,1,0,0,2,2,0,1 +Output=1,1,1,2,2,1,0,0,0,0 \ No newline at end of file diff --git a/Alogrithm/Alogrithm/include/20_MoveZeroes.h b/Alogrithm/Alogrithm/include/20_MoveZeroes.h new file mode 100644 index 0000000..7a5f4c9 --- /dev/null +++ b/Alogrithm/Alogrithm/include/20_MoveZeroes.h @@ -0,0 +1,2 @@ +#pragma once +void MoveZeroes(int* nums, int numsSize); \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/20_MoveZeroes.cpp b/Alogrithm/Alogrithm/src/20_MoveZeroes.cpp new file mode 100644 index 0000000..0784115 --- /dev/null +++ b/Alogrithm/Alogrithm/src/20_MoveZeroes.cpp @@ -0,0 +1,19 @@ +#include "../include/20_MoveZeroes.h" +//Ŀһ numsдһ 0 ƶĩβͬʱַԪص˳ +//˼·leftrightʼʱָͷ +// rightÿһԪأleftָͷβĵһ0 +// nums[right]Ϊ0򽻻rightleftƶ +// nums[right]Ϊ0leftָ0rightָһ +void MoveZeroes(int* nums, int numsSize) { + int left = 0, right = 0, temp = 0; + while (right < numsSize) { //right鳤ʱ˳ + if (nums[right] != 0) { //жԪǷΪ0򽻻ָͬʱƶΪ0ֻrightƶleftָ0 + temp = nums[left]; + nums[left] = nums[right]; + nums[right] = temp; + left++; + } + right++; + } + +} \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp index cfb0fd0..95bb9b6 100644 --- a/Alogrithm/Alogrithm/src/main.cpp +++ b/Alogrithm/Alogrithm/src/main.cpp @@ -1,8 +1,13 @@ #include -#include "../include/19_MySqrt.h" +#include "../include/20_MoveZeroes.h" int main() { - printf("%d\n", MySqrt(9)); + int arr[6] = { 1,2,0,1,0}; + MoveZeroes(arr, 5); + for (int i = 0; i < 5; i++) { + printf("%d ", arr[i]); + } + } diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp index 191a3c8..404f4fc 100644 --- a/Alogrithm/UnitTest/UnitTest.cpp +++ b/Alogrithm/UnitTest/UnitTest.cpp @@ -20,6 +20,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_16 "../Alogrithm/config/16_ReverseBits.ini" #define FileName_18 "../Alogrithm/config/18_PlusOne.ini" #define FileName_19 "../Alogrithm/config/19_MySqrt.ini" +#define FileName_20 "../Alogrithm/config/20_MoveZeroes.ini" namespace UnitTest { @@ -348,4 +349,26 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_20) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_20); + int input_count = 0, output_count = 0, returnSize = 0; + int* input_value; + int* output_value; + CString input, output; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "Input", " ", input.GetBuffer(200), 200, FileName_20); + GetPrivateProfileString(Section_Name[i], "Output", " ", output.GetBuffer(200), 200, FileName_20); + input_value = str_device(input, &input_count); + output_value = str_device(output, &output_count); + MoveZeroes(input_value, input_count); + for (int i = 0; i < input_count; i++) { + Assert::AreEqual(input_value[i], output_value[i]); + } + } + } + }; } diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj index 9e06df7..c51fda8 100644 --- a/Alogrithm/UnitTest/UnitTest.vcxproj +++ b/Alogrithm/UnitTest/UnitTest.vcxproj @@ -103,7 +103,7 @@ Windows $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) DebugFull - ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;../Alogrithm/Debug/9_AddBinary.obj;../Alogrithm/Debug/10_BinaryTreePaths.obj;../Alogrithm/Debug/11_CanWinNim.obj;../Alogrithm/Debug/12_IsValid.obj;../Alogrithm/Debug/13_MyAtoi.obj;../Alogrithm/Debug/14_SingleNumber.obj;../Alogrithm/Debug/15_WordPattern.obj;../Alogrithm/Debug/16_ReverseBits.obj;../Alogrithm/Debug/18_PlusOne.obj;../Alogrithm/Debug/19_MySqrt.obj;%(AdditionalDependencies) + ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;../Alogrithm/Debug/9_AddBinary.obj;../Alogrithm/Debug/10_BinaryTreePaths.obj;../Alogrithm/Debug/11_CanWinNim.obj;../Alogrithm/Debug/12_IsValid.obj;../Alogrithm/Debug/13_MyAtoi.obj;../Alogrithm/Debug/14_SingleNumber.obj;../Alogrithm/Debug/15_WordPattern.obj;../Alogrithm/Debug/16_ReverseBits.obj;../Alogrithm/Debug/18_PlusOne.obj;../Alogrithm/Debug/19_MySqrt.obj;../Alogrithm/Debug/20_MoveZeroes.obj;%(AdditionalDependencies) diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h index 87d221d..d2337f2 100644 --- a/Alogrithm/UnitTest/pch.h +++ b/Alogrithm/UnitTest/pch.h @@ -31,6 +31,7 @@ #include"../Alogrithm/include/16_ReverseBits.h" #include"../Alogrithm/include/18_PlusOne.h" #include"../Alogrithm/include/19_MySqrt.h" +#include"../Alogrithm/include/20_MoveZeroes.h" int CalcCount(int n, char(*str)[10],const char *FileName);