知识改变命运,
科技改变生活,
用心成就自我。
目录:
- 每日总结
- 变态青蛙跳台阶问题
- 小喵装进碗里
>>每日总结(数据结构)
- 若某线性表最常见的操作是存取任意指定序号的元素和在最后进行插入和删除的运算,则利用“顺序表”的存储方式最节省时间;
- “栈”是具有记忆功能的;
- 循环两列房子啊一维数组A[0.....M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出对操作,
队列中最多能容纳M-1个元素。初始时为空,下列判断队空和队满的条件:
队空:end1 == end2; 队满:end1 == (end2+1)modM - 对递归程序优化的一般手段是:伪递归优化;
- 将一棵二叉树的根结点放入到队列,然后递归执行如下操作,将出队节点所有子节点加入到队。
以上操作实现了:层序遍历(一层一层的进行遍历) - 将两个各有n个元素的有序表归并成一个有序表,最少的比较次数是:n
>>变态青蛙跳台阶问题
【题目描述】:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
【解题思路】:
排列:
每个台阶看成一个位置,除过最后一个位置,其它位置都有两种可能性,
所以总的排列数为2^(n-1)*1=2^(n-1)
代码演示:
class Solution {
public:
int jumpFloorII(int number) {
if(number <= 0)
return 0;
int total = 1;
for(int i = 1;i < number;i++)
total *= 2;
return total;
}
};
以上算法时间复杂度:O(N),优化至O(1),采用移位操作,代码实现如下:
class Solution {
public:
int jumpFloorII(int number) {
if(number <= 0)
return 0;
return 1<<(number-1);
}
};
>>快到碗里来
小喵们很喜欢把自己装进容器里的(例如碗),但是要是碗的周长比喵的身长还短,它们就进不去了。
现在告诉你它们的身长,和碗的半径,请判断一下能否到碗里去。
输入描述: 输入有多组数据。
每组数据包含两个整数n (1≤n≤2^128) 和r (1≤r≤2^128),分别代表喵的身长和碗的半径。
圆周率使用3.14。
输出描述: 对应每一组数据,如果喵能装进碗里就输出“Yes”;否则输出“No”。
代码实现:
#include<iostream>
using namespace std;
int main(){
double n,r;
while(cin >> n >> r){
//碗半径:r
//碗周长:l=2*pi*r
//喵的身长:n
if(n > 6.28*r)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
return 0;
}
~bye~
【告诫自己一定要认真且仔细,刚才在提交代码时,将题目中给的输出“No”,一不小心写成了“NO”,结果测试通过率0%,检查了好几遍才发现这么低级的错误!!!以此告诫自己,凡事细心、专心且用心!!!!!】