1. 斐波拉契数列的递归方法实现如下:
unsigned int fib(unsigned int n){
if(n == 0 | n== 1)
return 1;
return fib(n-1)+fb(n-2);
}
非递归实现
int Fibonacci_2(int n) {
int a = 0;
int b = 1;
int sum;
if (n == 1) {
return a;
}
if (n == 2) {
return b;
}
for (int i = 0; i < n - 2; ++i) {
sum = a + b;
a = b;
b = sum;
}
return sum;
}
定义一宏定义,翻转一个长整型的某BIT位
不会。
。
。
#define exchange(c) {
c = (c & 0xaa) >> 1 | (c & 0x55) << 1;
c = (c & 0xcc) >> 2 | (c & 0x33) << 2;
c = (c & 0xf0) >> 4 | (c & 0x0f) << 4;
}
2.c语言static的作用
1、隐藏
加了static就会对其他源文件隐藏。
2、保持变量内容的持久
static变量会在静态存储区完成唯一的一次初始化。
3、默认初始化为0
3.给定len个数的整型数组,找出数字连续最长序列的长度
力扣原题:力扣https://leetcode-cn.com/problems/longest-consecutive-sequence/
int longestConsecutive(vector& nums){
unordered_set num_set;
for(const int& num : nums){
num_set.insert(num);
} //去重
int longestStreak = 0;
for(const int& num : num_set) {
if(!num_set.count(num - 1)) {
int currentNum = num;
int currentStreak = 1;
while(num_set.count(currentNum + 1)) {
currentNum += 1;
currentStreak += 1;
}
longetStreak = max(longestStreak, currentStreak);
}
}
return longestStreak;
}
4.定义一函数,把pHead指向的单向链表反向
struct ListNode{
int val;
struct ListNode *next;
ListNode(int x) : val(x),next(null) {}
};
ListNode* ReverseList(ListNode* pHead) {
ListNode *p, *q;
//p指向头结点点下一个结点
p = pHead->next;
//将链表断开,头结点置为空
pHead->next = NULL;
//p不等于空向后遍历,直到找到最后一个结点
while(p != NULL)
{
//q指向p后面的一个结点
q = p->next;
//将p链接到pHead后面的节点
p->next = pHead->next;
//将p链接到pHaed后面
pHead->next = p;
//将p指针往后挪动
p = q;
}
return pHead;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)