977.有序陣列的平方
題目連結 :
程式碼 :
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
//int length = end(nums) - begin(nums);
int length = nums.size();
int ptr_Left;
int ptr_Right;
vector<int> array_Receive(length);
int ptr_ArrayReceive ;
ptr_Left = 0;
ptr_Right = length - 1;
ptr_ArrayReceive = length - 1 ; // 平方 和 陣列 從 最大值 側 開始 放
while(ptr_Left <= ptr_Right)
{
// 注意 這裡 需要 比較 的 是 “絕對值”
if(abs(nums[ptr_Left])>= abs(nums[ptr_Right]))
{
array_Receive[ptr_ArrayReceive] = ( nums[ptr_Left] * nums[ptr_Left] );
ptr_ArrayReceive--;
ptr_Left++;
}
else
{
array_Receive[ptr_ArrayReceive] = ( nums[ptr_Right] * nums[ptr_Right] );
ptr_ArrayReceive--;
ptr_Right--;
}
}
return array_Receive;
}
};
209.長度最小的子陣列
題目連結 :
程式碼 :
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int length = nums.size();
int ptr_Front ;
int ptr_Back ;
int countLength;
int MinLength;
int sum_Temp = 0;
int sum_Next_Temp;
ptr_Front = 0;
ptr_Back = 0;
countLength = 0;
while( ptr_Front < length && sum_Temp < target )
{
sum_Temp += nums[ptr_Front];
ptr_Front++;
countLength++;
}
// 邊界 考慮
if(sum_Temp < target )
{
return 0;
}
MinLength = countLength;
// 在 這 道 題 中 首次 處理 跟隨 的 縮短 長度 的 處理
//////////////////////////////////////
sum_Next_Temp = sum_Temp;
// 列印 測試
do
{
// 注意 邊界 考慮
sum_Temp = sum_Next_Temp;
sum_Next_Temp = sum_Temp - nums[ptr_Back] ;
if(sum_Next_Temp >= target)
{
ptr_Back++;
countLength--;
if(countLength < MinLength)
{
MinLength = countLength;
}
}
}while(sum_Next_Temp >= target );
//////////////////////////////////////
while(ptr_Front < length )
{
// 列印 測試
// “ 向 右 新增 一格 ”
// “ 發展 ”
//“類 回溯 法”
sum_Temp += nums[ptr_Front];
ptr_Front++;
countLength