算法学习之剑指offer(二)
题目1
题目描述
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
if(stack2.empty())
A_to_B(stack1,stack2);
return stack2.pop();
}
public void A_to_B(Stack<Integer> A,Stack<Integer> B){
if(A.empty())
throw new RuntimeException("队列为空");
while(!A.empty()){
B.push(A.pop());
}
}
}
题目2
题目描述
这是一道二分查找的变形的题目。
旋转之后的数组实际上可以划分成两个有序的子数组:前面子数组的大小都大于后面子数组中的元素
注意到实际上最小的元素就是两个子数组的分界线。本题目给出的数组一定程度上是排序的,因此我们试着用二分查找法寻找这个最小的元素。
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if(array.length==0)
return 0;
if(array.length==1)
return array[0];
int low = 0;
int high = array.length-1;
while(low<high){
int mid = (low+high)/2;
if(array[mid]>array[high])
low=mid+1;
else if(array[mid]==array[high])
low++;
else
high=mid;
}
return array[low];
}
}
题目3
题目描述
n<=39
public class Solution {
public int Fibonacci(int n) {
if(n<=0)
return 0;
if(n==1||n==2)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
题目4
题目描述
public class Solution {
public int JumpFloor(int target) {
if(target<=0)
return 0;
if(target==1)
return 1;
if(target==2)
return 2;
return JumpFloor(target-1)+JumpFloor(target-2);
}
}
题目5
题目描述(变态跳台阶)
因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级
跳1级,剩下n-1级,则剩下跳法是f(n-1)
跳2级,剩下n-2级,则剩下跳法是f(n-2)
所以f(n)=f(n-1)+f(n-2)+...+f(1)
因为f(n-1)=f(n-2)+f(n-3)+...+f(1)
所以f(n)=2*f(n-1)
public class Solution {
public int JumpFloorII(int target) {
if(target<=0)
return 0;
if(target==1)
return 1;
if(target==2)
return 2;
return 2*JumpFloorII(target-1);
}
}
题目6
题目描述![]()
public class Solution {
public int RectCover(int target) {
if(target <= 0){
return 0;
}
if(target == 1){
return 1;
}else if(target == 2){
return 2;
}else{
return RectCover((target-1))+RectCover(target-2);
}
}
}
算法学习之剑指offer(二)的更多相关文章
- 算法学习之剑指offer(十二)
一 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩 ...
- 算法学习之剑指offer(十一)
一 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. import java.util.*; ...
- 算法学习之剑指offer(九)
一 题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). public class Solution ...
- 算法学习之剑指offer(五)
题目1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. public class Solution ...
- 算法学习之剑指offer(十)
一 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3 ...
- 算法学习之剑指offer(八)
题目一 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没 ...
- 算法学习之剑指offer(六)
题目1 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. import java.util.*; public cl ...
- 算法学习之剑指offer(四)
题目1 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) /** public class TreeNode { int val = 0; Tree ...
- 算法学习之剑指offer(一)
题目一: 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路1:遍历 ...
随机推荐
- JWT与Session的比较
如今,越来越多的项目开始采用JWT作为认证授权机制,那么它和之前的Session究竟有什么区别呢?今天就让我们来了解一下. JWT是什么 定义 JSON Web Token(JWT)是一个开放标准(R ...
- Unity3D_07_日志、文本打印
1.Debug.Log(“hello”); 2.打开控制台查看日志:ctrl+shift+c 3.输出一个位置的坐标(需要转换成字符串.ToString()) Vector3 worldPositio ...
- 64位linux编译32位程序
昨天接到的任务,编译64位和32位两个版本的.so动态库给其他部门,我的ubuntu虚拟机是64位的,编译32位时遇到了问题: /usr/bin/ld: cannot find -lstdc++ 最后 ...
- 应用上下文webApplicationContext
一.先说ServletContext javaee标准规定了,servlet容器需要在应用项目启动时,给应用项目初始化一个ServletContext作为公共环境容器存放公共信息.ServletCon ...
- springboot Transactional事务的使用
直接上代码: import javax.transaction.Transactional; @Transactional(rollbackOn = { Exception.class }) publ ...
- 第五场周赛(字符串卡常个人Rank赛)——题解
本次题目因为比较简单,除了个别题目,其余题目我只写一个思路不再贴代码. 先是Div.2的题解 A题奇怪的优化,把递归函数改成2*fun(...)即可,其实看懂程序也不难,就是求a*2b: B题你会st ...
- Linux 笔记 - 第十一章 正则表达式
博客地址:http://www.moonxy.com 一.前言 正则表达式(英语为 Regular Expression,在代码中常简写为 regex.regexp 或 RE),是使用单个字符串来描述 ...
- 查看 Linux 系统版本信息
博客地址:http://www.moonxy.com 一.前言 Linux 下如何查看内核信息.发行版信息,系统位数.CPU 信息等等,Windows 下我们可以通过各种图形化软件来查看,但是对于 L ...
- 【Unity与Android】01-Unity与Android交互通信的简易实现
前言 使用Unity也有不短的时间了,安卓包也打过不少,但是对Unity与Android的交互却知之甚少. 因工作需求,需要在Android平台接一些sdk(扩展功能).我就借此机会就了解了下Unit ...
- C++基础之string类
string也是属于顺序容器,但是string类很重要且经常使用,因此在这里单独记录. string的操作总结 string(const char *s,int n); //用c字符串s初始化,s应 ...