
剑指offer
雨 渊
准备蹭过龙门的客户端酸菜鱼
展开
-
剑指offer 题目合集 做题笔记
读题一定要仔细!!!原创 2020-06-26 19:50:30 · 260 阅读 · 0 评论 -
剑指offer 24 反转链表 Kotlin
一、题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000二、代码/** * Example: * var li = ListNode(5) * var v = li.`val` * Definition for singly-linked list.原创 2021-10-12 18:11:58 · 190 阅读 · 0 评论 -
剑指offer 06 从尾到头打印链表 Kotlin
一、题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000二、代码/** * Example: * var li = ListNode(5) * var v = li.`val` * Definition for singly-linked list. * class ListNode(var `val`: Int) { * var原创 2021-10-12 17:20:49 · 140 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈 Kotlin
一、题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。二、代码class MinStack() { /** initialize your data structure here. */ val stack = Stack<Int>() var minstack = Stack<Int>() fun push(x: Int) {原创 2021-10-11 10:08:48 · 181 阅读 · 0 评论 -
剑指offer 12 数值的整数次方 Java
一、题目描述题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0示例1输入2,3返回值8.00000二、代码public class Solution { public double Power(double base, int exponent) { double result=1; if(exponent > 0)原创 2021-02-03 18:32:59 · 121 阅读 · 1 评论 -
剑指offer11 二进制中1的个数 Java
一、题目描述题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1输入10返回值2二、代码public class Solution { public int NumberOf1(int n) { int count = 0; while(n != 0){ count += n & 1; n >>>= 1; }原创 2021-02-03 16:13:48 · 112 阅读 · 0 评论 -
剑指offer10 矩形覆盖 Java
一、题目描述我们可以用2 * 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 * 1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?n=3时,2*3的矩形块有3种覆盖方法示例1输入4返回值5二、代码这几道题都是斐波那契数列的亲戚呢emmmmm我不会告诉你看到输入是4输出是5我就PTSD了的_(:з」∠)_想要优化版可以看这个~public class Solution { public int rectCover(int target) {原创 2021-01-13 22:24:27 · 132 阅读 · 0 评论 -
剑指offer 08 跳台阶 Java 编译错误解决方法
一、题目描述题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1输入1返回值1示例2输入4返回值5二、代码Java不知道为什么说我的返回值不是int…多次尝试无果还是捡起了基本功…下面的是C的递归代码,如果对时间复杂度和空间复杂度有要求或者像下一题变态跳台阶一样,多考虑一下数据的存储问题也是需要的,不过这个逻辑就i是跟上一题一模一样,就是最后一步可能是一阶那就是f(n-1)的方法数+原创 2021-01-13 22:02:31 · 158 阅读 · 0 评论 -
剑指offer 07斐波那契数列 Java
一、题目描述题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n\leq 39n≤39示例1输入4返回值3二、代码方法1: 简单递归public class Solution { public int Fibonacci(int n) { if( n==0 ) return 0; if( n == 2 || n == 1 )原创 2021-01-13 21:36:06 · 135 阅读 · 0 评论 -
剑指offer 04重建二叉树 Java
一、题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。示例1输入[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]返回值{1,2,5,3,4,6,7}二、代码/** * Definition for binary tree * public class TreeNode {原创 2021-01-02 16:51:51 · 162 阅读 · 0 评论 -
剑指offer 03从尾到头打印链表 Java
一、题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。示例1输入{67,0,24,58}返回值[58,24,0,67]二、代码/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import原创 2021-01-02 16:26:23 · 151 阅读 · 1 评论 -
剑指offer 02替换空格 Java
一、题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。二、代码public class Solution { public String replaceSpace(StringBuffer str) { if(str == null) return null; StringBuffer re = new StringBuffer();原创 2021-01-02 16:13:25 · 135 阅读 · 1 评论 -
剑指offer 01数组中的查找 Java
一、题目描述题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]返回值true二、代码public class Solution { public boolean Find(int target, int [][] array) {原创 2021-01-02 10:30:51 · 130 阅读 · 1 评论 -
剑指offer 求1+2+3+...+n Java
一、题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。二、代码public class Solution { public int Sum_Solution(int n) { //IntStream.range(1,n+1).sum(); boolean flag = n > 0 && (n += Sum_Solution(n - 1)) >原创 2020-11-01 22:40:57 · 115 阅读 · 0 评论 -
剑指offer 二叉搜索树的第k个结点 Java
一、题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。输入{5,3,7,2,4,6,8},3返回值{4}说明按结点数值大小顺序第三小结点的值为4二、代码//借鉴了leetcode上的高赞注释public class Solution { int count=0; TreeNode result=null; TreeNode KthNode(TreeNode pRoot, int k){ this.count=k;//利用形参值k对类变原创 2020-11-01 22:29:36 · 101 阅读 · 0 评论 -
剑指offer 旋转数组的最小数字 Java
一、题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。输入[3,4,5,1,2]返回值1二、代码强行遍历:O(n)import java.util.ArrayList;public class Solution { public int minNumberInRotateArray(int [] array) {原创 2020-10-31 10:55:10 · 800 阅读 · 1 评论 -
剑指offer 用两个栈实现队列 Java
一、题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。二、代码import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); int temp,result=0; p原创 2020-10-31 09:43:06 · 122 阅读 · 0 评论 -
剑指offer 变态跳台阶 Java
一、题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。二、代码target=0时,应为0target=1时,应为1target=2时,分为1+1 / 2两种跳法= 1+1 = 2target=3时,分为1+target=2 / 2+target=1 / 3 = target(2)+target(1)+1 = 2+1+1 = 4target=4时,分为1+target=3 / 2+target=2 / 3+target=1 /原创 2020-10-30 12:36:35 · 149 阅读 · 0 评论 -
剑指offer 二叉树的镜像 Java
一、题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5二、代码public class Solution { public void Mirror(TreeNode root) { if(root == null) return; Tre原创 2020-10-30 11:03:13 · 161 阅读 · 0 评论 -
剑指offer 二叉树的深度 Java
一、题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。二、代码public class Solution { public int TreeDepth(TreeNode root) { if(root == null) return 0; TreeNode temp = root; int left = TreeDepth(te原创 2020-10-30 10:30:20 · 161 阅读 · 0 评论 -
剑指offer 不用加减乘除做加法 Java
一、题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。二、知识点分析关于位运算:运算符意义&按位与|按位或^异或运算符~取反运算符<<左移运算符(补0,等于乘于2的n次方(没有发生有效位丢失时))>>右移运算符(正数左边第一位补0,负数补1,等于除于2的n次方)>>>无符号右移运算符(高位补0)如果有进一步了解的需求的话可以参看这篇图解Ja原创 2020-10-30 10:10:29 · 124 阅读 · 0 评论 -
剑指offer 构建乘积数组 思路 解法 C++ Java
一、题目描述题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)二、题目分析与思路第一遍看的时候觉得很奇怪,不知道题目在说什么,其实关键在于这一句(遇到表达式什么的千万要仔细看。。。)B[i]=A[0]A[1]…*A[i原创 2020-06-26 19:51:24 · 165 阅读 · 0 评论