随笔分类 - 剑指Offer
剑指Offer中的题目
摘要:剑指 offer 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路1: 如果出现一个数字出现的次数超过数组长度的一半那么这
阅读全文
摘要:剑指 offer 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路: 看完剑指 offer 才知道,觉得主要是回溯法。递归。 两步: 1. 求第一个位置上所有
阅读全文
摘要:剑指 offer 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路: 递归判断,相等时判断其左右孩子是否相等。 / public class TreeNode { int val = 0; TreeNode left = null; Tree
阅读全文
摘要:剑指 offer 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路: 1. 先判断链表中有环,如果一个链表中有环,那么用两个指针,一个每次移动一个,另外一个指针每次移动两个,那么他们一定会相遇。如果没有环,移动快的那个结点会先指到末尾的 null。 2. 如
阅读全文
摘要:剑指 offer 题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路: 使用两个指针,第一个直线先指向第 k 个结点,然后两个指针一起移动当第一个指针移动到末尾,那么第二个指针指向的元素就是倒数第 k 个结点 / public class ListNode { int val; ListNo
阅读全文
摘要:剑指 offer 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路: 1. 类似于冒泡,前偶后奇交换,时间复杂度 O(N^2) 2. 空间换时间,新建两个数组分别存
阅读全文
摘要:剑指 Offer 如果需要删除链表中的一个已知结点时,需不需要通过链表遍历找到该结点的前一个结点然后将前一个结点指向该结点的下一个结点? 不需要,可以将该结点的下一个结点的值复制给该结点,然后该结点的 next 下下个结点。 不过需要考虑 3 种情况:1.链表只有一个结点(头指针需要赋值为NULL)
阅读全文
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路: 主要是要考虑0,指数是负数,base是负数的一些情况。 public class Solution { //1.需要考虑base为0时,exponent为负数时 //2.
阅读全文
摘要:题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+
阅读全文
摘要:题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这
阅读全文
摘要:剑指Offer 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0
阅读全文
摘要:剑指Offer 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 import java.util.Stack; public class Solution { Stack stack1 = new Stack(); Stack stack2 = new
阅读全文
摘要:题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 : 1.如果该结点有右孩子那么下一个结点一定对应着其右孩子最左边的结点。 2.如果该结点没有右孩子,但该结点是其父亲结点的左孩子,那么下一个结点指向
阅读全文
摘要:剑指offer 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路: 查找前序遍历中第一个元素在中
阅读全文
摘要:剑指Offer 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 思路: 后进先出,栈。 / public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val;
阅读全文
摘要:题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 时间复杂度是 O(N), 空间复杂度也是 O(N) public class Solution { public String r
阅读全文
摘要:剑指Offer 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 如上图:一共4行4列,假如要查找的数是5。 1. 先从右上角开始 9 大于 5,第 4 列可以去掉
阅读全文
摘要:剑指Offer 题目描述 在一个长度为n的数组里的所有数字都在0到n 1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2 第一种
阅读全文

浙公网安备 33010602011771号