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]Ϊ0rightleftƶ
+// 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);