![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Bruin_W
只想把自己遇到的问题发出来记录,并希望能帮到大家-.-
展开
-
原创 算法——剑指offer解析(图解)——15.(复盘成功)反转链表
题目描述 输入一个链表,反转链表后,输出新链表的表头。原创 2021-01-07 15:56:26 · 102 阅读 · 0 评论 -
原创 算法——剑指offer解析——14.(复盘成功)链表中倒数第k个结点
假如有五个节点,倒数第4个节点,是正数第5-4个,从0开始就是0,5-4-1 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ class Solution{ public ListNode FindKthToTail(ListNode head, int k) { final int原创 2020-12-23 09:34:39 · 92 阅读 · 0 评论 -
算法——剑指offer解析——12.(复盘成功)数值的整数次方原创Java实现
题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 public class Solution { public double Power(double base, int exponent) { double res = 1,curr = base; int n; if(exponent > 0){ n = e原创 2020-12-23 09:33:43 · 87 阅读 · 0 评论 -
算法——剑指offer解析(图解)——8.(复盘成功)跳台阶Java实现
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 对于本题,前提只有 一次 1阶或者2阶的跳法。 a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1); b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2) c.由a\b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) d.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可原创 2020-12-21 19:57:20 · 114 阅读 · 0 评论 -
算法——剑指offer解析——7.(复盘成功)斐波那契数列Java实现
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 斐波那契数列定义为第一个数和第二个数相加等于第三个数 例如0、1、1、2、3、5、8、13、21、34 public class Solution { public int Fibonacci(int n) { int Prepre = 0;//第0项,相对于当前项的前面的前面项 int pre = 1;//第一项,相对于当前项的前面项原创 2020-12-21 19:55:09 · 94 阅读 · 0 评论 -
算法——剑指offer解析——6.(复盘成功)旋转数组的最小数字Java实现
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解法: 采用二分法解答这个问题, mid = low + (high - low)/2 需要考虑三种情况: (1)array[mid] > array[high]: 出现这种情况的array类似[3,4,5,6,0,1,原创 2020-12-21 19:53:30 · 88 阅读 · 0 评论 -
算法——剑指offer解析(图解)——5.(复盘成功)用两个栈实现队列Java实现
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:利用两个栈,一个栈入栈,另一个栈将第一个栈出栈的入栈,再出栈 如图: 代码实现 import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(原创 2020-12-21 19:52:06 · 102 阅读 · 0 评论 -
LEETCODE88
public void merge(int[] nums1, int m, int[] nums2, int n) { int p1 =m - 1; int p2 =n - 1; int p = m + n -1; while ((p1 >= 0) && (p2 >= 0)){ //nums1[p--]长数组末尾 nums1[p--] = nums1[p1] <原创 2020-10-21 09:42:33 · 96 阅读 · 0 评论 -
算法——剑指offer解析(图解)——4.重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路 因为是树的结构,一般都是用递归来实现。 用数学归纳法的思想就是,假设最后一步,就是root的左右子树都已经重建好了,那么我只要考虑将root的左右子树安上去即可。 根据前序遍历的性质,第一个元素必然就是root,那么下面的工作就是如何确定root的左右子原创 2020-05-27 01:00:15 · 213 阅读 · 0 评论 -
算法——剑指offer解析(图解)——3.从尾到头打印链表
利用栈的特性先进后出,实现从尾到头打印链表,代码如下 import java.util.ArrayList; import java.util.Stack; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ...原创 2020-04-23 15:58:56 · 160 阅读 · 0 评论 -
算法——剑指offer解析(图解)——2.替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。原创 2020-04-23 15:06:31 · 199 阅读 · 0 评论 -
算法——剑指offer解析(图解)——1.二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 三种解法: 第一种暴力匹配,时间复杂度O(n^2) 第二种二分法,时间复杂度O(nlogn) 第三种如上图所示,时间复杂度O(m*n) /*public boolean Find(int ta...原创 2020-04-23 11:04:27 · 195 阅读 · 0 评论