
剑指offer
RyanWang0000
这个作者很懒,什么都没留下…
展开
-
剑指offer13-15:链表中倒数第K个结点、反转链表、合并两个排序的列表
13、链表中倒数第K个结点输入一个链表,输出该链表中倒数第k个结点。思路:定义两个指针都指向头部,先让第一个指针走k步,然后两个指针一起向后走,直到第一个指针为空,此时第二个指针就是倒数第k个。或者也可以先进行一次遍历,求出长度然后求出倒数k个的值。/*public class ListNode { int val; ListNode next = null; L...原创 2020-03-23 17:30:00 · 259 阅读 · 0 评论 -
剑指offer10-12:二进制中1的个数、数值的整数次方、调整数组顺序使奇数位于偶数前面
10、二进制中1的个数输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:方法一,无符号右移,整数n变成二进制表示后逐个判断最低位是否是1,如果是1就让计数器加1,然后进行无符号右移1位,如果不是1,就直接右移1位,直到传入的整数n变成0停止。如何判断最低位是否是0,可以用n&1来判断。public class Solution { public int N...原创 2020-03-22 11:40:16 · 213 阅读 · 0 评论 -
剑指offer7-9:跳台阶、变态跳台阶、矩阵覆盖
7、跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路:简单的一维动态规划,dp[1]=1,dp[2]=2;到达第n阶(n>2)有两种方法,从第n-2阶一次跳两阶上去或者从第n-1阶跳一阶上去。于是可得状态转移方程:dp[n]=dp[n-1]+dp[n-2];public class Solution { ...原创 2020-03-22 10:44:07 · 146 阅读 · 0 评论 -
剑指offer4-6:重建二叉树、用两个栈实现队列、旋转数组的最小数字
4、重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:因为是树的结构,一般都是用递归来实现。用数学归纳法的思想就是,假设最后一步,就是root的左右子树都已经重建好了,那么我只要考虑将root...原创 2020-03-21 18:02:47 · 166 阅读 · 0 评论 -
剑指offer1-3:二维数组中的查找、替换空格、从尾到头打印链表
1、二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:从二维数组的左下角开始比较,若数组中的元素大于待查数字,则往上找,即height–(因为该行都比待查数字大),若数组中的元素小于待查数字,则往右找,即i++publi...原创 2020-03-18 10:23:36 · 186 阅读 · 0 评论