剑指offer
i_chase
这个作者很懒,什么都没留下…
展开
-
剑指offer--跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。一级台阶只有一种跳法两级台阶有两种跳法(一级+一级 或者 直接两级)n级台阶:第一步 可以选择是 跳一阶(剩下n-1阶) 或者 跳两阶(剩下n-2阶)f(n) = f(n-1) + f(n-2)代码如下public class Solution...原创 2018-12-15 21:04:38 · 96 阅读 · 0 评论 -
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。既然不能用循环,就选择递归。递归的终止条件利用&&的短路特性代码如下public class Solution { public int Sum_Solution(int n) { //1996可以是任意...原创 2019-01-18 21:35:29 · 177 阅读 · 0 评论 -
最大连续子列和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2019-01-18 19:49:53 · 108 阅读 · 0 评论 -
把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。java 巧解: import java.util.*;public class Solution { public String PrintMinNumber(int [] numb...原创 2019-01-23 21:09:39 · 71 阅读 · 0 评论 -
链表倒数第k个节点
设置两个引用a和b, 开始都指向链表头,然后让b向后移k-1个。此时a是正数第一个,b是正数第k个节点。接下来,同时让a和b向后移,当b是倒数第1个时,a恰好就是倒数第k个/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val =...原创 2019-01-12 19:27:13 · 89 阅读 · 0 评论 -
数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。首先,这道题不是要你用语言中内置的pow函数。。。可以用乘法实现幂次,这个比较简单,就不贴代码了。为O(n)时间复杂度有一种叫做快速幂算法的方法,可以快速实现。为O(lgn)时间复杂度具体原理暂时不懂,有机会写一下补充上来。可以参考这篇文档:https://wenku.ba...原创 2018-12-15 23:04:49 · 90 阅读 · 0 评论 -
二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。java语言中,int为32位向右移i位,则代表整数n的二进制表示中从右往左数的第i位 成为了 移位后的 整数的最右边一位而1的二进制表示为 0000 0000 0000 0000 0000 0000 0000 0001因此int t = n>>>i;t&1 这个整数,除了最后一位,之...原创 2018-12-15 21:59:34 · 373 阅读 · 0 评论 -
分析变态跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。n = 1时,只有一种跳法n = 2时,两种跳法n>2时,第一步可能 跳1,2,3.....,n步f(n) = f(n-1) + f(n-2) + ..... + f(1) + 1public class Solution { public int Ju...原创 2018-12-15 21:36:17 · 147 阅读 · 0 评论 -
剑指offer----从尾到头打印链表
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。链表节点如下public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}解法一:先顺序遍历,将每个节点的值加入ArrayList,再将Arra...原创 2018-12-04 13:24:00 · 91 阅读 · 0 评论 -
剑指offer-----替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。-----------------------------------------------------------------------------------------------------------------------...原创 2018-12-03 19:54:35 · 94 阅读 · 0 评论 -
剑指offer第一题
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数第一种解法:对数组的每一行做二分查找,找到了就停 复杂度为mlgn public boolean Find(int target, int [][] array) { if(array==null ||...原创 2018-12-02 22:57:45 · 107 阅读 · 0 评论 -
简单的Fibonacci数列
Fibonacci数列,第一个数字为0,第二个数字为1,以后的每一个数字为前两个数字之和,这就是Fibonacci数列题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。第一种解法:递归public class Solution { public int Fibonacci(int n) { if(n...原创 2018-12-15 20:37:14 · 312 阅读 · 0 评论 -
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
从牛客网看到的解法,搬运过来链接:https://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215来源:牛客网首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:...原创 2019-01-18 22:00:48 · 1490 阅读 · 0 评论