![](https://img-blog.csdnimg.cn/412dff919d5841478fb90defec04f92a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
剑指Offer
Offer
孙中明
这个作者很懒,什么都没留下…
展开
-
JZ77按之字形顺序打印二叉树
import java.util.*; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public ArrayList<ArrayList<Integ.原创 2024-03-17 21:44:56 · 193 阅读 · 0 评论 -
剑指 Offer 40. 最小的k个数
剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 输入:arr = [0,1,2,1], k = 1 输出:[0] class Solution { public int[] getLeastNumbers(int[] arr, int k) { /*原创 2022-06-03 13:29:15 · 481 阅读 · 2 评论 -
JZ7 斐波那契数列
public class Solution { public int Fibonacci(int n) { if(n<0) return -1; if(n==0) return 0; if(n==1) return 1; int a =0; int b=1; int res=1; for(int i=1;i<n;i++){ res...原创 2022-05-24 09:11:47 · 488 阅读 · 0 评论 -
JZ6 旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 示例1 输入 复制 [3,4,5,1,2] 返回值 复制 1 import java.util.ArrayList; public class Solution { public int minNumberInRotateArray(int [] array) { if(array.l原创 2022-05-24 09:11:11 · 504 阅读 · 0 评论 -
JZ52 两个链表的第一个公共结点
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { if (pHead1 ==原创 2022-03-30 22:02:23 · 718 阅读 · 1 评论 -
剑指 Offer 25. 合并两个排序的链表
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { //设置两个指针,分别指向l1和.原创 2022-07-24 14:35:27 · 435 阅读 · 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。请问该机器人能够到达多少个格子? 示例 1: 输入:m = 2, n = 3, k = 1 输出:3 示例 2: 输入:m =原创 2021-11-24 10:32:40 · 633 阅读 · 15 评论 -
剑指 Offer 12. 矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。 [["a","b","c","e"], ["s","f","c","s"], ["a","d","e","e"]] 但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个原创 2021-11-18 09:48:06 · 655 阅读 · 15 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 示例 3: 输入:n = 0 输出:1 提示: 0 <= n <= 100 我的答案 class Solution { int a=1,b=1; int res;原创 2021-11-11 15:17:28 · 882 阅读 · 10 评论 -
剑指offer记录贴
状态 题目 通过率 难度 说明 ???? 剑指 Offer 03. 数组中重复的数字 67.8% 简单 剑指 Offer 04. 二维数组中的查找 40.3% 中等 剑指 Offer 05. 替换空格 76.0% 简单 剑指 Offer 06. 从尾到头打印链表 75.1% 简单 剑指 Offer 07. 重建二叉树 69.8% 中等 剑指 Offer 09. 用两个栈实现队列 71.4% 简单 剑指 Offer 10- I. 斐波那契数列 36.0.原创 2021-11-09 17:03:43 · 713 阅读 · 13 评论 -
剑指 Offer 09. 用两个栈实现队列
题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendTail","deleteHead","deleteHead"] [[],[3],[],[]] 输出:[null,null,3,-1] 示例 2: 输入: ["CQueue","deleteHead","app原创 2021-10-26 14:51:41 · 624 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制: 0 <= 节点个数 <= 5000 答案 /** * Definition for a binary tree原创 2021-10-24 09:00:00 · 593 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 我的答案 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } *原创 2021-10-22 08:55:19 · 615 阅读 · 3 评论 -
剑指 Offer 05. 替换空格
题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 我的答案 class Solution { public String replaceSpace(String s) { StringBuffer str =new StringBuffer(); //System.out.println(s.charAt(0)); //S原创 2021-10-19 19:19:22 · 608 阅读 · 4 评论 -
剑指 Offer 04. 二维数组中的查找
题目 剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30原创 2021-10-18 08:48:04 · 695 阅读 · 22 评论 -
剑指 Offer 03. 数组中重复的数字
题目 剑指 Offer 03. 数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 我的答案 class Solution { public int findRepeatNumber(int[] nums) {原创 2021-10-16 10:30:47 · 734 阅读 · 16 评论