給乙個長度為 n 的陣列 nums 和乙個長度為 k 的陣列 req, 你需要根據要求摺疊陣列,並輸出摺疊的結果
1.如果 req[i] = 0 意味著你應該從左到右摺疊, 例如:
1 2 3 4 5 6 7 8 ==> 4 3 2 1
5 6 7 8
2.如果 req[i] = 1 意味著你應該從右往左摺疊, 例如:
1 2 3 4 5 6 7 8 ==> 8 7 6 5
1 2 3 4
更多的例子:
從左到右摺疊43
21 ==> 655
6783
4217
8從右到左摺疊
65 ==> 834
1214
7856
327
注意事項:
n 為 2 的冪
k 是指數.(例如 n = 2^3 = 8,k = 3)
樣例:
給出陣列 nums = [1, 2, 3, 4, 5, 6, 7, 8] 和 陣列 req = [0, 0, 1] 原地改變元素位置為 [8, 1, 4, 5, 6, 3, 2, 7]
思路:
對於不同的摺疊後的陣列,表示方法為由上到下,從左到右依次存放到陣列中。
4 3 2 1 ->
5 6 7 8
從左向右摺疊,將陣列的前半部分反向,根據長度len的大小,將前半部分與後半部分按照相對順序組合成新的陣列。
從右向左摺疊,將陣列的後半部分反向,根據長度len的大小,將後半部分與前半部分按照相對順序組合成新的陣列。
#ifndef c703_h
#define c703_h
#include
#include
#include
using
namespace
std;
class solution
return nums;
}void left(vector
&nums, int len)
nums = res;
}void right(vector
&nums, int len)
nums = res;
}};#endif
LintCode 陣列劃分
給出乙個整數陣列nums和乙個整數k。劃分陣列 即移動陣列nums中的元素 使得 返回陣列劃分的位置,即陣列中第乙個位置i,滿足nums i 大於等於k。您在真實的面試中是否遇到過這個題?yes 樣例給出陣列nums 3,2,2,1 和 k 2,返回 1 注意你應該真正的劃分陣列nums,而不僅僅只...
LintCode 陣列劃分
陣列劃分 給出乙個整數陣列nums和乙個整數k。劃分陣列 即移動陣列nums中的元素 使得 所有小於k的元素移到左邊 所有大於等於k的元素移到右邊 返回陣列劃分的位置,即陣列中第乙個位置i,滿足nums i 大於等於k。樣例 給出陣列nums 3,2,2,1 和 k 2,返回 1 注意 你應該真正的...
LintCode 陣列劃分
給出乙個整數陣列 nums 和乙個整數 k。劃分陣列 即移動陣列 nums 中的元素 使得 所有小於k的元素移到左邊 所有大於等於k的元素移到右邊 返回陣列劃分的位置,即陣列中第乙個位置 i,滿足 nums i 大於等於 k。class solution param nums the integer...