字符串相乘
class Solution:
def multiply(self, num1: str, num2: str) -> str:
res=[0]*(len(num1)+len(num2))
for i in range(len(num1))[::-1]:
carry=0
for j in range(len(num2))[::-1]:
tmp=int(num1[i])*int(num2[j])+carry
carry,res[i+j+1]=divmod((res[i+j+1]+tmp),10)
res[i]+=carry
res="".join(map(str,res))
res=res.lstrip(‘0’)
return ‘0’ if not res else res
不知道哪里错了的c++解法
class Solution {
public:
string multiply(string num1, string num2) {
if (num1.size() > 110 || num2.size() > 110)
return 0;
int n = num1.size();
int m = num2.size();
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < n; i++)
{
sum1 = sum1 * 10;
sum1 = num1[i] - 48 + sum1;
}
for (int j= 0; j< m; j++)
{
sum2 = sum2 * 10;
sum2 = num2[j] - 48 + sum2;
}
int w = sum1 * sum2;
int g = w;
int len = 0;
while(g != 0) {
len++;
g = g / 10;
}
string s;
int i = 1;
while (w!=0)
{
//每次取到的是数字的最末位,所以str从后往前存储
s[len - i] = (w%10) + '0';
w=w/10;
i++;
}
s[len] = '\0';//末尾加上结束符
return s;
}
};
全排列
class Solution {
public:
vector<vector> permute(vector& nums) {
vector<vector>res;
int n=nums.size(),x=1;
for(int i=2;i<=n;i++) x*=i;
while(x–){
res.push_back(nums);
next_permutation(nums.begin(),nums.end());
}
return res;
}
};
最大字序和
暴力解法
class Solution {
public:
int maxSubArray(vector& nums) {
int result = INT32_MIN;
int temp = 0;
for (int i = 0; i < nums.size(); i++) {
temp = 0;
for (int j = i; j < nums.size(); j++) {
temp+= nums[j];
if(temp>result)
result=temp;
}
}
return result;
}
};