LeetCode算法刷题计划(1)— 基础50题
自己近几天在LeetCode上面刷的50道基础算法题,下面按照算法类型进行分类
一、malloc
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
int n=nums.size();
for(int i=0;i<n;i++){
nums.push_back(nums[i]);
}
return nums;
}
};
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
vector<int> shuffle(vector<int>& nums, int n) {
for(int i=0;i<2*n;i++){
if(nums[i]>0){
int j=i;
while(nums[i]>0){
j=j<n?2*j:2*(j-n)+1;
swap(nums[i],nums[j]);
nums[j]=-nums[j];
}
}
}
for(auto &num:nums){
num=-num;
}
return nums;
}
};
//时间复杂度:O(10^n)
//空间复杂度:O(10^n)
class Solution {
public:
vector<int> printNumbers(int n) {
vector<int>ans;
int side=0;
while(n--){
side=side*10+9;
}
for(int i=1;i<=side;i++){
ans.push_back(i);
}
return ans;
}
};
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
for(int i=1;i<nums.size();i++){
nums[i]=nums[i]+nums[i-1];
}
return nums;
}
};
//时间复杂度:O(n*logn)
//空间复杂度:O(n)
class Solution {
public:
vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
vector<pair<int,int>>pairs;
for(int i=0;i<nums.size();i++){
pairs.push_back(make_pair(nums[i],i));
}
sort(pairs.begin(),pairs.end());
vector<int>ans(nums.size());
int pre=-1;
for(int i=0;i<pairs.size();i++){
if(pre==-1||pairs[i].first!=pairs[i-1].first){
pre=i;
}
ans[pairs[i].second]=pre;
}
return ans;
}
};
二、位运算
//时间复杂度:O(2^n)
//空间复杂度:O(n)
class Solution {
public:
int ans=0;
void dfs(int val,int idx,vector<int>&nums){
if(idx==nums.size()){
ans+=val;
return;
}
dfs(val^nums[idx],idx+1,nums);
dfs(val,idx+1,nums);
}
int subsetXORSum(vector<int>& nums) {
dfs(0,0,nums);
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/d7b4aa88f4a0451ca1dca05eb8f35c6f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
vector<int> decode(vector<int>& encoded, int first) {
vector<int>ans(encoded.size()+1);
ans[0]=first;
for(int i=1;i<=encoded.size();i++){
ans[i]=encoded[i-1]^ans[i-1];
}
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/660bddc52b44416e853ae723e25f2d73.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(1)
//空间复杂度:O(1)
class Solution {
public:
vector<int> swapNumbers(vector<int>& numbers) {
numbers[0]=numbers[0]^numbers[1];
numbers[1]=numbers[0]^numbers[1];
numbers[0]=numbers[0]^numbers[1];
return numbers;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/09ca86fe39e3452c8ed56f1870bfdff8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
int hammingWeight(uint32_t n) {
int count=0;
while(n!=0){
if((n&1)==1){
count++;
}
n>>=1;
}
return count;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/c010fd0f3ea5463190a0aa2028474017.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(logn)
//空间复杂度:O(1)
class Solution {
public:
int rangeBitwiseAnd(int left, int right) {
int count=0;
while(left<right){
left>>=1;
right>>=1;
count++;
}
return left<<count;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/11ca19937f844b7ca8bc316517d5ef40.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(logn)
//空间复杂度:O(1)
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t ans=0;
for(int i=0;i<32&&n>0;i++){
ans |= (n&1) << (31-i);
n >>= 1;
}
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/0e534b24c7d64d9294a8c8fe6f721df7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
vector<int> countBits(int n) {
vector<int>dp(n+1,0);
for(int i=1;i<=n;i++){
dp[i]=dp[i>>1]+(i&1);
}
return dp;
}
};
三、计数
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
int numIdenticalPairs(vector<int>& nums) {
int ans=0;
unordered_map<int,int>mp;
mp[nums[0]]=1;
for(int i=1;i<nums.size();i++){
ans+=mp[nums[i]];
mp[nums[i]]++;
}
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/6b5c76c80d54468c8c2fe65bb5c4181c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
bool checkIfPangram(string sentence) {
int ans=0;
for(auto c:sentence){
ans|=1<<(c-'a');
if((ans^0x3ffffff)==0){
return true;
}
}
return false;
}
};
四、字符串
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
int finalValueAfterOperations(vector<string>& operations) {
int x=0;
for(auto str:operations){
if(str=="++X"||str=="X++"){
x++;
}else{
x--;
}
}
return x;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/21f2cbe74f0e45c5a558bb7c36db39d8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n^2)
//空间复杂度:O(1)
class Solution {
public:
string defangIPaddr(string address) {
for(int i=0;i<address.length();i++){
if(address[i]=='.'){
address.insert(i+1,"]");
address.insert(i,"[");
i++;
}
}
return address;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/fdf8616aee4d41e9baff6276e968895e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n^2)
//空间复杂度:O(n)
class Solution {
public:
int countConsistentStrings(string allowed, vector<string>& words) {
int count=0;
unordered_set<char>s;
for(auto c:allowed){
s.insert(c);
}
for(auto word:words){
int flag=1;
for(auto c:word){
if(s.count(c)==0){
flag=0;
break;
}
}
if(flag)
count++;
}
return count;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/26a70cba4b5043a1b80c3d93b342d380.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
void reverseString(vector<char>& s) {
for(int i=0,j=s.size()-1;i<j;i++,j--){
swap(s[i],s[j]);
}
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/80cf491d64604e78a067c869d2e17b92.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
string reverseLeftWords(string s, int n) {
string ans=s;
for(int i=0;i<s.length();i++){
ans[(i+s.length()-n)%s.length()]=s[i];
}
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/5b4d2aad8dc04bbca369da32e0926b8b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) {
string s1="",s2="";
for(auto word:word1){
s1+=word;
}
for(auto word:word2){
s2+=word;
}
return s1==s2;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ab190c5049c495382323862e0e9c0d6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
string complexNumberMultiply(string num1, string num2) {
string s1_z="",s1_f="",s2_z="",s2_f="";
int flag=1;
for(int i=0;i<num1.length();i++){
if(num1[i]!='+'&&flag){
s1_z+=num1[i];
}else{
flag=0;
}
if(num1[i]=='+')
continue;
if(flag==0&&num1[i]!='i'){
s1_f+=num1[i];
}
}
flag=1;
for(int i=0;i<num2.length();i++){
if(num2[i]!='+'&&flag){
s2_z+=num2[i];
}else{
flag=0;
}
if(num2[i]=='+')
continue;
if(flag==0&&num2[i]!='i'){
s2_f+=num2[i];
}
}
int n1_z=stoi(s1_z),n1_f=stoi(s1_f),n2_z=stoi(s2_z),n2_f=stoi(s2_f);
string ans=to_string(n1_z*n2_z-n1_f*n2_f)+"+"+to_string(n1_f*n2_z+n1_z*n2_f)+"i";
return ans;
}
};
五、递归
//时间复杂度:O(n)
//空间复杂度:O(n)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
unordered_set<int>s;
void search(TreeNode *root){
if(root!=NULL){
s.insert(root->val);
search(root->left);
search(root->right);
}
}
int numColor(TreeNode* root) {
search(root);
return s.size();
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/7c40f8f6fd6f4dae9ea50dd40bead750.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
int count=0;
int numberOfSteps(int num) {
if(num%2==0&&num!=0){
count++;
numberOfSteps(num/2);
}
if(num%2==1){
count++;
numberOfSteps(num-1);
}
return count;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/99776fe6c02c487a99a35fd3b721cde6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(H)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int maxdepth=-1,ans=0;
void dfs(TreeNode *root,int depth){
if(root==NULL){
return;
}
if(depth>maxdepth){
ans=root->val;
maxdepth=depth;
}else if(depth==maxdepth){
ans+=root->val;
}
dfs(root->left,depth+1);
dfs(root->right,depth+1);
}
int deepestLeavesSum(TreeNode* root) {
dfs(root,1);
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/1a7f2d8174594150b1bb5206559909d0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(H)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==NULL){
return 0;
}
int left_dep=maxDepth(root->left);
int right_dep=maxDepth(root->right);
return max(left_dep,right_dep)+1;
}
};
六、公式
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
int sum=0;
int sumNums(int n) {
n>0&&(sum=n+sumNums(n-1));
return sum;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf67d8afff384a138cb270ec195f5811.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
int multiply(int A, int B) {
if(B==1){
return A;
}
return A+multiply(A,B-1);
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/9e5327f2aae649129fa66216a2eefe64.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
int fib(int n) {
if(n<2){
return n;
}
int p=0,q=1,ans;
for(int i=2;i<=n;i++){
ans=p+q;
p=q;
q=ans;
}
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/f52c106ba8e742d8b008e06ef792972a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(sqrt(n))
//空间复杂度:O(1)
class Solution {
public:
int kthFactor(int n, int k) {
int ans;
for(ans=1;ans<=sqrt(n);ans++){
if(n%ans==0){
k--;
if(k==0){
return ans;
}
}
}
ans--;
if(ans*ans==n){
ans--;
}
for(;ans>0;ans--){
if(n%ans==0){
k--;
if(k==0){
return n/ans;
}
}
}
return -1;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/7129a38036004230883bdb76cbbd3bc1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n^2)
//空间复杂度:O(1)
class Solution {
public:
int countTriples(int n) {
int count=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int c=sqrt(i*i+j*j);
if(c<=n&&c*c==i*i+j*j){
count++;
}
}
}
return count;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/080524eeb85d45ee9f699247c3572c3a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
int gcd(int a,int b){
int t;
while(t!=0){
t=a%b;
a=b;
b=t;
}
return a;
}
int findGCD(vector<int>& nums) {
int maxn=-1,minn=5555;
for(int i=0;i<nums.size();i++){
maxn=max(maxn,nums[i]);
minn=min(minn,nums[i]);
}
return gcd(maxn,minn);
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/e7e7b28e1f7143a496fc7112cc3e02d6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n^3)
//空间复杂度:O(1)
class Solution {
public:
double area(vector<int>a,vector<int>b,vector<int>c){
return 0.5*abs(a[0]*b[1]+b[0]*c[1]+c[0]*a[1]-a[1]*b[0]-b[1]*c[0]-c[1]*a[0]);
}
double largestTriangleArea(vector<vector<int>>& points) {
double maxarea=0;
int n=points.size();
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
for(int k=j+1;k<n;k++)
maxarea=max(maxarea,area(points[i],points[j],points[k]));
return maxarea;
}
};
七、枚举
//时间复杂度:O(n)。这里用一重循环对n个数字进行异或。
//空间复杂度:O(1)。这里只是用了常量级别的辅助空间。
class Solution {
public:
int xorOperation(int n, int start) {
int ans=0;
for(int i=0;i<n;i++){
ans=ans^(start+2*i);
}
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/97899859dac6498a834a14fd3d2ba9f1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(logn)
//空间复杂度:O(1)
class Solution {
public:
int subtractProductAndSum(int n) {
int sum=0,mut=1;
while(n!=0){
sum+=(n%10);
mut*=(n%10);
n/=10;
}
return mut-sum;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/1a5df935c45c4f40b6fd0a63d3a0c6a4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
int findNumbers(vector<int>& nums) {
int count=0;
for(auto num:nums){
if((int)(log10(num)+1)%2==0){
count++;
}
}
return count;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/54d09e99aea94600a3c2a4de7b79a63f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(logn)
//空间复杂度:O(1)
class Solution {
public:
int search(vector<int>& nums, int target) {
int n=nums.size();
int left=0,right=n-1;
while(left<=right){
int mid=(left+right)/2;
if(nums[mid]==target){
return mid;
}else if(nums[0]<=nums[mid]){
if(target>=nums[0]&&target<=nums[mid]){
right=mid-1;
}else{
left=mid+1;
}
}else{
if(target>=nums[mid]&&target<=nums[n-1]){
left=mid+1;
}else{
right=mid-1;
}
}
}
return -1;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf8d85ae53e44b6eb9e329e2ea5a2169.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
int countKDifference(vector<int>& nums, int k) {
unordered_map<int,int>mp;
int count=0;
for(int i=0;i<nums.size();i++){
int a=nums[i]+k,b=nums[i]-k;
if(mp.find(a)!=mp.end()){
count+=mp[a];
}
if(mp.find(b)!=mp.end()){
count+=mp[b];
}
mp[nums[i]]++;
}
return count;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/2a47f148a60746d5a2b9af213c54d7ae.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
int numJewelsInStones(string jewels, string stones) {
unordered_set<char>s;
int count=0;
for(auto jewel:jewels){
s.insert(jewel);
}
for(auto stone:stones){
if(s.count(stone)){
count++;
}
}
return count;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf5b6a11d60441698e620298a0216ace.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n^2)
//空间复杂度:O(n)
class Solution {
public:
int sumOddLengthSubarrays(vector<int>& arr) {
int n=arr.size();
int dp[n];
int sum=arr[0];
dp[0]=arr[0];
for(int i=1;i<n;i++){
sum+=arr[i];
dp[i]=dp[i-1]+arr[i];
}
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if((j-i+1)%2==1){
sum+=dp[j]-dp[i]+arr[i];
}
}
}
return sum;
}
};
八、进制
//时间复杂度:O(n)
//空间复杂度:O(1)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
int getDecimalValue(ListNode* head) {
int ans=0;
while(head!=NULL){
ans|=head->val;
ans<<=1;
head=head->next;
}
ans>>=1;
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/321dae1675674d7d8bd32ab4bb525f7a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(logn)
//空间复杂度:O(1)
class Solution {
public:
int sumBase(int n, int k) {
int sum=0;
while(n!=0){
sum+=(n%k);
n/=k;
}
return sum;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/a680ce31cd4b48a1bd083ce4e0c4b849.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(1)
//空间复杂度:O(1)
class Solution {
public:
int addDigits(int num) {
if(num>0&&num%9==0){
return 9;
}
return num%9;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/b62a5ce429174167aed4227ff4a407e5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
string convertToBase7(int num) {
string s="";
int flag=0;
if(num<0){
flag=1;
num=-num;
}
if(num==0){
return "0";
}
while(num!=0){
s+=(num%7)+'0';
num/=7;
}
reverse(s.begin(),s.end());
if(flag){
s.insert(0,"-");
}
return s;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/a24904aeb5dc4478b585ca7cdd124365.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(k) k为十六进制的位数
//空间复杂度:O(k)
class Solution {
public:
string toHex(int num) {
if(num==0){
return "0";
}
string s="";
for(int i=7;i>=0;i--){
int tmp=(num>>(4*i))&15;
if(tmp>0||s.length()>0){
s+=tmp<10?(tmp+'0'):('a'+tmp-10);
}
}
return s;
}
};
九、排序
//时间复杂度:O(nlogn)
//空间复杂度:O(1)
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
sort(nums.begin(),nums.end());
return nums;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/2c8365fe543b43509dfb54a2ce0f656b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(nlogn)
//空间复杂度:O(n)
class Solution {
public:
static bool cmp(pair<char,int>a,pair<char,int>b){
return a.second>b.second;
}
string frequencySort(string s) {
unordered_map<char,int>mp;
vector<pair<char,int>>pairs;
string ans="";
for(auto c:s){
mp[c]++;
}
for(auto it:mp){
pairs.push_back(it);
}
sort(pairs.begin(),pairs.end(),cmp);
for(auto [ch,num]:pairs){
for(int i=0;i<num;i++){
ans+=ch;
}
}
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/2d02224edb4e465aaeb346e0437884d7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(nlogn)
//空间复杂度:O(1)
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
int cnt=1,idx=0;
sort(nums.begin(),nums.end());
while(idx<nums.size()&&nums[idx]<=0){
idx++;
}
for(int i=idx;i<nums.size();i++){
if(nums[i]!=cnt){
return cnt;
}
if(i+1<nums.size()&&nums[i]!=nums[i+1]){
cnt++;
}else if(i+1==nums.size()){
cnt++;
}
}
return cnt;
}
};
十、思维
//时间复杂度:O(n)
//空间复杂度:O(1)
class Solution {
public:
int arraySign(vector<int>& nums) {
int flag=1;
for(auto num:nums){
if(num==0){
return 0;
}
if(num<0){
flag=-flag;
}
}
return flag;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a213fd3daa04a8d906e3d2aa525a78d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(1)
//空间复杂度:O(1)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
node->val=node->next->val;
node->next=node->next->next;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/373d61013bef48f8bba45d20579508b9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5p2Oc3nlkIzlraY=,size_20,color_FFFFFF,t_70,g_se,x_16)
//时间复杂度:O(n)
//空间复杂度:O(1)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteNode(ListNode* head, int val) {
ListNode *h=head;
if(head->val==val){
return head->next;
}
while(h!=NULL){
if(h->next->val==val){
h->next=h->next->next;
return head;
}
h=h->next;
}
return head;
}
};