Browse Source

分支22完成

master
linyongji 4 years ago
parent
commit
326e0861b4
11 changed files with 145 additions and 6 deletions
  1. +5
    -0
      .gitignore
  2. BIN
      Alogrithm/.vs/Alogrithm/v16/.suo
  3. +3
    -0
      Alogrithm/Alogrithm/Alogrithm.vcxproj
  4. +9
    -0
      Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
  5. +36
    -0
      Alogrithm/Alogrithm/config/22_Rotate.ini
  6. +6
    -0
      Alogrithm/Alogrithm/include/22_Rotate.h
  7. +57
    -0
      Alogrithm/Alogrithm/src/22_Rotate.cpp
  8. +3
    -5
      Alogrithm/Alogrithm/src/main.cpp
  9. +24
    -0
      Alogrithm/UnitTest/UnitTest.cpp
  10. +1
    -1
      Alogrithm/UnitTest/UnitTest.vcxproj
  11. +1
    -0
      Alogrithm/UnitTest/pch.h

+ 5
- 0
.gitignore View File

@@ -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

BIN
Alogrithm/.vs/Alogrithm/v16/.suo View File


+ 3
- 0
Alogrithm/Alogrithm/Alogrithm.vcxproj View File

@@ -153,6 +153,7 @@
<ClCompile Include="src\1_ContainsNearbyDuplicate.cpp" />
<ClCompile Include="src\20_MoveZeroes.cpp" />
<ClCompile Include="src\21_Reverse.cpp" />
<ClCompile Include="src\22_Rotate.cpp" />
<ClCompile Include="src\2_ExcelSheetColumnTitle.cpp" />
<ClCompile Include="src\3_bool IsUgly.cpp" />
<ClCompile Include="src\4_IsPalindrome.cpp" />
@@ -176,6 +177,7 @@
<ClInclude Include="include\1_ContainsNearbyDuplicate.h" />
<ClInclude Include="include\20_MoveZeroes.h" />
<ClInclude Include="include\21_Reverse.h" />
<ClInclude Include="include\22_Rotate.h" />
<ClInclude Include="include\2_ExcelSheetColumnTitle.h" />
<ClInclude Include="include\3_bool IsUgly.h" />
<ClInclude Include="include\4_IsPalindrome.h" />
@@ -198,6 +200,7 @@
<None Include="config\1_ContainsNearbyDuplicate.ini" />
<None Include="config\20_MoveZeroes.ini" />
<None Include="config\21_Reverse.ini" />
<None Include="config\22_Rotate.ini" />
<None Include="config\2_ExcelSheetColumnTiTle.ini" />
<None Include="config\3_bool IsUgly.ini" />
<None Include="config\4_IsPalindrome.ini" />


+ 9
- 0
Alogrithm/Alogrithm/Alogrithm.vcxproj.filters View File

@@ -87,6 +87,9 @@
<ClCompile Include="src\21_Reverse.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="src\22_Rotate.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="include\2_ExcelSheetColumnTitle.h">
@@ -149,6 +152,9 @@
<ClInclude Include="include\21_Reverse.h">
<Filter>头文件\include</Filter>
</ClInclude>
<ClInclude Include="include\22_Rotate.h">
<Filter>头文件\include</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="config\3_bool IsUgly.ini">
@@ -211,5 +217,8 @@
<None Include="config\21_Reverse.ini">
<Filter>资源文件\config</Filter>
</None>
<None Include="config\22_Rotate.ini">
<Filter>资源文件\config</Filter>
</None>
</ItemGroup>
</Project>

+ 36
- 0
Alogrithm/Alogrithm/config/22_Rotate.ini View File

@@ -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

+ 6
- 0
Alogrithm/Alogrithm/include/22_Rotate.h View File

@@ -0,0 +1,6 @@
#pragma once
#include<stdio.h>
#include<stdlib.h>
void Rotate1(int* nums, int numsSize, int k);
void Rotate2(int* nums, int numsSize, int k);
void Rotate3(int* nums, int numsSize, int k);

+ 57
- 0
Alogrithm/Alogrithm/src/22_Rotate.cpp View File

@@ -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++) { //i从0开始,当i和numsSize相等时结束
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--;
}
}
//方法二:先把整个数组逆置,再把0到k-1逆置,再把k到numsSize-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); //如果count和numsSize相等,说明该结束了
}
}

+ 3
- 5
Alogrithm/Alogrithm/src/main.cpp View File

@@ -1,11 +1,9 @@
#include<stdio.h>
#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);
}

+ 24
- 0
Alogrithm/UnitTest/UnitTest.cpp View File

@@ -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]);
}
}
}
};
}

+ 1
- 1
Alogrithm/UnitTest/UnitTest.vcxproj View File

@@ -103,7 +103,7 @@
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<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;%(AdditionalDependencies)</AdditionalDependencies>
<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)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">


+ 1
- 0
Alogrithm/UnitTest/pch.h View File

@@ -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);


Loading…
Cancel
Save