剑指offer面试题
我是养乐多
这个作者很懒,什么都没留下…
展开
-
剑指offer面试题19:正则表达式的匹配
class Solution { public boolean isMatch(String s, String p) { //情况1:字符串s的长度为0 if(s.length()==0){ //如果正则字符串的长度为奇数,肯定不匹配 因为要么是空,要么是(a*b*c*) if(p.length()%2!=0){return false;} //如果正则字符串不是这种形式(a*b*)也不匹配 int原创 2020-06-02 16:53:22 · 296 阅读 · 0 评论 -
剑指offer面试题18:删除链表的节点
题目要求:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }时间复杂度O(n)解法:1.若链表为空,直接返回空2.若要删除头节点,直接返回第二个节点3.然后遍历...原创 2020-04-30 23:46:03 · 158 阅读 · 0 评论 -
剑指offer面试题17:打印从1到最大的n位数
题目要求:输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999解题思路:1.首先暴力法遍历可以求解,但是大整数问题需要另一种思路2.构建一个StringBuilder字符串,输入的n为多少,就赋多少个0。3.当该字符串没有发生位数溢出的时候,循环打印4.首先从最小位数开始累加,最开始为’0’,每次循环+1,一直到’...原创 2020-04-30 00:40:58 · 185 阅读 · 0 评论 -
剑指offer面试题16:数值的整数次方
题目要求:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。解题思路:这一题需要我们实现base的exponent次幂的计算,首先需要考虑边界值,传入的base 是否为0,若为0,则需要考虑0没有0次方和负指数幂。然后再考虑一个简单的循环方法,将base累乘exponent次即可,...原创 2020-04-21 23:30:56 · 187 阅读 · 0 评论 -
剑指offer面试题15:二进制数中1的个数
**题目要求:**请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。**不可行的解法一:**将该整数(二进制)与1进行位运算,判断最右边一位是否为1,若为1,则计数器加一,然后将该数右移一位,但是该方法只适用于正整数,因为负数右移一位,最左边补一个1,会导致死循环。public cla...原创 2020-04-21 00:11:18 · 208 阅读 · 0 评论 -
剑指offer面试题14:剪绳子
题目要求:难度中等33收藏分享切换为英文关注反馈给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。解题思路:动态规划条件:1.大问题...原创 2020-04-20 00:31:02 · 162 阅读 · 0 评论 -
剑指offer面试题13:机器人在矩阵的运动范围
题目要求:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人...原创 2020-04-18 00:30:04 · 182 阅读 · 0 评论 -
剑指offer面试题12:矩阵中的路径
题目要求:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”...原创 2020-04-16 22:03:33 · 246 阅读 · 0 评论 -
剑指offer面试题11:旋转数组的最小数字
题目要求:class Solution { public int minArray(int[] numbers) { int length = numbers.length; if (numbers == null || length == 0) { throw new RuntimeException("传入的数组为空"); ...原创 2020-04-16 00:08:24 · 148 阅读 · 0 评论 -
剑指offer面试题10:斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),否则返回int类型长度不够class Sol...原创 2020-04-13 21:32:17 · 268 阅读 · 0 评论 -
剑指offer面试题9:用两个栈实现队列
class CQueue { Stack<Integer> stack1; Stack<Integer> stack2; public CQueue() { stack1=new Stack<Integer>();; stack2=new Stack<Integer>(); } ...原创 2020-04-06 22:20:17 · 167 阅读 · 0 评论 -
剑指offer面试题7:重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。preorder为前序遍历的数组inorder为中序遍历的数组class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { int length=preorder.len...原创 2020-04-03 21:31:06 · 151 阅读 · 0 评论 -
剑指offer面试题6 :从尾到头打印链表
题目描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)考虑使用堆栈! public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } class Solution { public int[] reversePrint(List...原创 2020-04-01 14:49:01 · 164 阅读 · 0 评论 -
剑指offer面试题5:替换空格
题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。java中不存在指针,则使用暴力法求解,建立一个新数组,遍历一遍字符串,遇到空格,则往数组添加三个字符’%’ ‘2’ ‘0’,否则加入当前字符。class Solution { public String replaceSpace(String s) { int length=s.length();...原创 2020-03-30 00:44:47 · 150 阅读 · 0 评论 -
剑指offer面试题4:二维数组中的查找
题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。题解:暴力法检查每一个元素的情况不考虑提供一个方法,从数组的右上角开始寻找,如果右上角的元素比要找的元素大,则删除这一列,若右上角的元素比要找的元素小,则删除这一行class Solution { ...原创 2020-03-28 22:55:26 · 169 阅读 · 0 评论 -
剑指offer面试题3:数组中重复的数字
题目描述:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。解题方法1:用set容器,因为set容器的key值是不能重复的,将数字逐一添加进容器,若出现失败,则该key值为...原创 2020-03-27 10:34:07 · 253 阅读 · 0 评论