許久沒更新了,這回放上4道力扣的題吧
1480. 一維數組的動態和
連結:https://leetcode-cn.com/problems/running-sum-of-1d-array/
給你一個數組 nums 。數組「動態和」的計算公式為:runningSum[i] = sum(nums[0]…nums[i])請返回 nums 的動態和
示例 1:
輸入:nums = [1,2,3,4]
輸出:[1,3,6,10]
解釋:動態和計算過程為 [1, 1+2, 1+2+3, 1+2+3+4] 。
示例 2:
輸入:nums = [1,1,1,1,1]
輸出:[1,2,3,4,5]
解釋:動態和計算過程為 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。
示例 3:
輸入:nums = [3,1,2,10,1]
輸出:[3,4,6,16,17]
int* runningSum(int* nums, int numsSize, int* returnSize){
if(numsSize == 0)
{
*returnSize = 0;
return NULL;
}
for(int i = 1; i < numsSize; i++)
{
nums[i] = nums[i - 1] + nums[i];
}
*returnSize = numsSize;
return nums;
}1431. 擁有最多糖果的孩子
連結:https://leetcode-cn.com/problems/kids-with-the-greatest-number-of-candies/
給你一個數組 candies 和一個整數 extraCandies ,其中 candies[i] 代表第 i 個孩子擁有的糖果數目對每一個孩子,檢查是否存在一種方案,將額外的 extraCandies 個糖果分配給孩子們之後,此孩子有 最多 的糖果。注意,允許有多個孩子同時擁有 最多 的糖果數目。
示例 1:
輸入:candies = [2,3,5,1,3], extraCandies = 3
輸出:[true,true,true,false,true]
解釋:
孩子 1 有 2 個糖果,如果他得到所有額外的糖果(3個),那麼他總共有 5 個糖果,他將成為擁有最多糖果的孩子。
孩子 2 有 3 個糖果,如果他得到至少 2 個額外糖果,那麼他將成為擁有最多糖果的孩子。
孩子 3 有 5 個糖果,他已經是擁有最多糖果的孩子。
孩子 4 有 1 個糖果,即使他得到所有額外的糖果,他也只有 4 個糖果,無法成為擁有糖果最多的孩子。
孩子 5 有 3 個糖果,如果他得到至少 2 個額外糖果,那麼他將成為擁有最多糖果的孩子。示例 2:
輸入:candies = [4,2,1,1,2], extraCandies = 1
輸出:[true,false,false,false,false]
解釋:只有 1 個額外糖果,所以不管額外糖果給誰,只有孩子 1 可以成為擁有糖果最多的孩子。示例 3:
輸入:candies = [12,1,12], extraCandies = 10
輸出:[true,false,true]bool* kidsWithCandies(int* candies, int candiesSize, int extraCandies, int* returnSize)
{
if(candiesSize==0)
{
*returnSize=0;
return NULL;
}
bool *test=(bool*)malloc(candiesSize*sizeof(bool));
int max=0;
for(int i=0;i<candiesSize;i++)
{
max=max>=candies[i]?max:candies[i];
candies[i]+=extraCandies;
}
for(int i=0;i<candiesSize;i++)
{
test[i]=(max<=candies[i]);
}
*returnSize=candiesSize;
return test;
}1.兩數之和
連結:https://leetcode-cn.com/problems/two-sum/
給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 的那 兩個 整數,並返回它們的數組下標。
你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。
你可以按任意順序返回答案。
示例 1:
輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:
輸入:nums = [3,2,4], target = 6
輸出:[1,2]示例 3:
輸入:nums = [3,3], target = 6
輸出:[0,1]class Solution
{
public:
vector<int> twoSum(vector<int>& nums, int target)
{
vector<int> result;
for ( int i = 0; i < nums.size ( ); i++ )
{
for ( int j = i + 1; j < nums.size ( ); j++ )
{
if ( nums [ i ] + nums [ j ] == target )
{
result.push_back ( i );
result.push_back ( j );
goto done;
}
}
}
done:
return result;
}
};7. 整數反轉
連結:https://leetcode-cn.com/problems/reverse-integer/
給你一個 32 位的有符號整數 x ,返回 x 中每位上的數字反轉後的結果。
如果反轉後整數超過 32 位的有符號整數的範圍 ,就返回 0。
假設環境不允許存儲 64 位整數(有符號或無符號)。
示例 1:
輸入:x = 123
輸出:321示例 2:
輸入:x = -123
輸出:-321示例 3:
輸入:x = 120
輸出:21示例 4:
輸入:x = 0
輸出:0class Solution
{
public:
int reverse(int x)
{
vector<int> v;
long long int result = 0;
while ( x != 0 )
{
v.push_back ( x % 10 );
x /= 10;
}
vector<int>::iterator it = v.begin ( );
while ( !v.empty ( ) )
{
result += v.front ( ) * pow ( 10 , v.size ( ) - 1 );
v.erase ( it );
}
if ( result > INT_MAX || result < INT_MIN )
{
return 0;
}
else
{
return ( int )result;
}
}
};力扣我也是剛開始寫,解題也是不太完美
時間複雜度和空間複雜度雖說學完了數據結構,感覺遇到這些題還是不太會算
後面再加強吧