实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
代码:
class Solution {
public:
bool invalidInput = false;
bool myequal(double a,double b){
return abs(a-b)<0.0000001 ? true : false;
}
double myPow(double x, int n) {
invalidInput = false;
long nn =n;
if(myequal(x,0.0) && nn < 0){
invalidInput = true;
return 0.0;
}
unsigned int absn = (unsigned int) (nn);
if(nn < 0){
absn = (unsigned int) (-nn);
}
double result = helper(x,absn);
if(nn < 0){
result = 1.0/result;
}
return result;
}
double helper(double x, unsigned int n){
if(n == 0){
return 1;
}
if(n == 1){
return x;
}
double result = helper(x, n>>1);
result *= result;
if(n & 0x1 == 1){
result *= x;
}
return result;
}
};
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例 1:
输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]
说明:
用返回一个整数列表来代替打印
n 为正整数
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
考虑大数问题,用全排列解决问题
代码:
class Solution {
public:
vector<int> res;
vector<int> printNumbers(int n) {
string numstr(n,'0');
dfs(0,n,numstr);
auto it = res.begin();
res.erase(it);
return res;
}
void dfs(int index, int n, string &s){
if(index == n){
res.push_back(atoi(s.c_str()));
return;
}
for(int i = 0;i<10;++i){
char temp = i+'0';
s[index] = temp;
dfs(index+1,n,s);
}
}
};
思路:
DFS全排列打印
代码:
#include
using namespace std;
void DFS(int index, int n, vector<int>& boxs, vector<int> book,string str){
if(index == n+1){
for (int i = 1; i <= n+1; ++i) {
cout.put(boxs[i-1]);
}
cout<<endl;
return;
}
for (int i = 1; i <=n ; ++i) {
if(book[i] == 0){
boxs[index] = str[i-1];
book[i] = 1;
DFS(index+1,n,boxs,book,str);
book[i] = 0;
}
}
}
int main()
{
string str("abcd");
int n=str.length();
vector<int> boxs;
vector<int> books;
boxs.resize(n+1,0);
books.resize(n+1,0);//标记数组初始化为0
DFS(1,n,boxs,books,str);
return 0;
}