diff --git a/.gitignore b/.gitignore
index 9d51f36..0d2594d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -178,3 +178,8 @@ Alogrithm/TestResults/3a4f3224-7b61-4f96-9f94-502bfe5fd902/林_MI-1 2021-01-26 1
Alogrithm/TestResults/8c6c8585-34aa-48ac-85e3-14d7928dfa16/林_MI-1 2021-01-26 13_40_06.coverage
Alogrithm/TestResults/a754108b-7c18-474b-b14f-0bda44b6f79f/林_MI-1 2021-01-26 13_35_01.coverage
Alogrithm/UnitTest/Debug/UnitTest.tlog/link.1416.delete.1.tlog
+Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/32e7304035ccb73/22_ROTATE.ipch
+Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/eb64263dd3de4a08/22_ROTATE.ipch
+Alogrithm/.vs/Alogrithm/v16/TestStore/0/007.testlog
+Alogrithm/Alogrithm/Debug/22_Rotate.obj
+Alogrithm/UnitTest/Debug/UnitTest.tlog/link.15328.delete.1.tlog
diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo
index 2ef4303..f8ee011 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 e874e1f..06841ac 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj
@@ -153,6 +153,7 @@
+
@@ -176,6 +177,7 @@
+
@@ -198,6 +200,7 @@
+
diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
index ff3e4de..468f922 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
@@ -87,6 +87,9 @@
源文件\src
+
+ 源文件\src
+
@@ -149,6 +152,9 @@
头文件\include
+
+ 头文件\include
+
@@ -211,5 +217,8 @@
资源文件\config
+
+ 资源文件\config
+
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/config/22_Rotate.ini b/Alogrithm/Alogrithm/config/22_Rotate.ini
new file mode 100644
index 0000000..b77655e
--- /dev/null
+++ b/Alogrithm/Alogrithm/config/22_Rotate.ini
@@ -0,0 +1,36 @@
+[Test1]
+Input=1,2,3,4,5,6,7
+k=3
+Output=5,6,7,1,2,3,4
+[Test2]
+Input=1,2,3,4,5,6,7
+k=2
+Output=6,7,1,2,3,4,5
+[Test3]
+Input=1,2,3,4,5,6
+k=2
+Output=5,6,1,2,3,4
+[Test4]
+Input=1,2,3,4,5,6
+k=3
+Output=4,5,6,1,2,3
+[Test5]
+Input=1,2,3,4,5,6
+k=1
+Output=6,1,2,3,4,5
+[Test6]
+Input=1,2,3,4,5,6
+k=7
+Output=6,1,2,3,4,5
+[Test7]
+Input=-1,-100,3,99
+k=2
+Output=3,99,-1,-100
+[Test8]
+Input=-1,-100,3,99
+k=4
+Output=-1,-100,3,99
+[Test9]
+Input=1,2
+k=1
+Output=2,1
diff --git a/Alogrithm/Alogrithm/include/22_Rotate.h b/Alogrithm/Alogrithm/include/22_Rotate.h
new file mode 100644
index 0000000..1a39445
--- /dev/null
+++ b/Alogrithm/Alogrithm/include/22_Rotate.h
@@ -0,0 +1,6 @@
+#pragma once
+#include
+#include
+void Rotate1(int* nums, int numsSize, int k);
+void Rotate2(int* nums, int numsSize, int k);
+void Rotate3(int* nums, int numsSize, int k);
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/src/22_Rotate.cpp b/Alogrithm/Alogrithm/src/22_Rotate.cpp
new file mode 100644
index 0000000..cf5dbd3
--- /dev/null
+++ b/Alogrithm/Alogrithm/src/22_Rotate.cpp
@@ -0,0 +1,57 @@
+#include "../include/22_Rotate.h"
+//Ŀһ飬еԪƶkλãkǷǸ
+
+//һһµ飬ÿԪذҪƶλãηŵŵµС
+void Rotate1(int* nums, int numsSize, int k) {
+ int* cpynums=(int *)malloc(sizeof(int) * numsSize); //µ
+ for (int i = 0; i < numsSize; i++) { //i0ʼinumsSizeʱ
+ cpynums[(i+k)%numsSize] = nums[i]; //numsĵһһηŵĵi+kλ
+ }
+ for (int i = 0; i < numsSize; i++) { //ƶɵ鿽ԭ
+ nums[i] = cpynums[i];
+ }
+}
+
+//ʹõúָԪ
+void reverse(int* nums, int start, int end) {
+ int temp = 0;
+ while (start < end) {
+ temp = nums[start];
+ nums[start] = nums[end];
+ nums[end] = temp;
+ start++;
+ end--;
+ }
+}
+//Ȱãٰ0k-1ãٰknumsSize-1ãõת
+void Rotate2(int* nums, int numsSize, int k) {
+ k = k % numsSize;
+ reverse(nums, 0, numsSize - 1);
+ reverse(nums, 0, k - 1);
+ reverse(nums, k ,numsSize - 1);
+ for (int i = 0; i < numsSize; i++) { //ƶɵ鿽ԭ
+ printf("%d ", nums[i]);
+ }
+}
+
+//װ滻
+//1,ֱӱ飬ǰλõֵ滻滻λã滻λõֵڱchangeУһ滻
+//2, numsSize k ıʱͻѭͬλõ
+//3,ÿѭ֮Ҫ1һλõƶ
+
+void Rotate3(int* nums, int numsSize, int k) {
+ int count = 0; //ԪصĴΪnumsSize
+ for (int i = 0; count < numsSize; i++) { //iãnumsSizeΪkıѭͬλʱѴƶһλ
+ int temp = 0; //ʱʱ
+ int change = nums[i]; //ŵһҪ滻ֵ
+ do
+ {
+ count++; //countʵʴ1ʼ
+ temp = change; //ǰλõֵҪ滻λõֵ滻λõֵchangeУһ滻
+ change = nums[(k * count + i) % numsSize];
+ nums[(k * count + i) % numsSize] = temp;
+ if ((count * k)%numsSize == 0) //numsSize k ıʱѭ
+ break;
+ } while (count != numsSize); //countnumsSizeȣ˵ý
+ }
+}
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp
index 5b673de..e9e0524 100644
--- a/Alogrithm/Alogrithm/src/main.cpp
+++ b/Alogrithm/Alogrithm/src/main.cpp
@@ -1,11 +1,9 @@
#include
-#include "../include/21_Reverse.h"
+#include "../include/22_Rotate.h"
int main()
{
-
- printf("%d ",Reverse(214748364));
-
-
+ int arr[] = { 1,2,3,4,5,6,7};
+ Rotate3(arr, 7,3);
}
diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp
index f3ee58f..f5c4ab6 100644
--- a/Alogrithm/UnitTest/UnitTest.cpp
+++ b/Alogrithm/UnitTest/UnitTest.cpp
@@ -22,6 +22,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework;
#define FileName_19 "../Alogrithm/config/19_MySqrt.ini"
#define FileName_20 "../Alogrithm/config/20_MoveZeroes.ini"
#define FileName_21 "../Alogrithm/config/21_Reverse.ini"
+#define FileName_22 "../Alogrithm/config/22_Rotate.ini"
namespace UnitTest
{
@@ -387,4 +388,27 @@ namespace UnitTest
}
}
};
+ TEST_CLASS(UnitTest_22)
+ {
+ TEST_METHOD(TestMethode1)
+ {
+ char Section_Name[100][10] = { 0 };
+ int Section_Count = CalcCount(100, Section_Name, FileName_22);
+ int input_count = 0, output_count = 0, returnSize = 0;
+ int* input_value;
+ int* output_value;
+ CString input, output,k;
+ for (int i = 0; i < Section_Count; i++) {
+ GetPrivateProfileString(Section_Name[i], "Input", " ", input.GetBuffer(200), 200, FileName_22);
+ GetPrivateProfileString(Section_Name[i], "k", " ", k.GetBuffer(20), 20, FileName_22);
+ GetPrivateProfileString(Section_Name[i], "Output", " ", output.GetBuffer(200), 200, FileName_22);
+ input_value = str_device(input, &input_count);
+ output_value = str_device(output, &output_count);
+ Rotate1(input_value, input_count, _ttoi(k));
+ 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 9b3db92..b1ba7a6 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;../Alogrithm/Debug/20_MoveZeroes.obj;../Alogrithm/Debug/21_Reverse.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;../Alogrithm/Debug/21_Reverse.obj;../Alogrithm/Debug/22_Rotate.obj;%(AdditionalDependencies)
diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h
index 160e994..290700f 100644
--- a/Alogrithm/UnitTest/pch.h
+++ b/Alogrithm/UnitTest/pch.h
@@ -33,6 +33,7 @@
#include"../Alogrithm/include/19_MySqrt.h"
#include"../Alogrithm/include/20_MoveZeroes.h"
#include"../Alogrithm/include/21_Reverse.h"
+#include"../Alogrithm/include/22_Rotate.h"
int CalcCount(int n, char(*str)[10],const char *FileName);