剑指offer
fatvaaa
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer之二维数组中的查找
剑指offer之二维数组中的查找题目描述方法一题目描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target = 3,返回 false。数据范围:矩阵的长宽满足 0≤n,m≤500,矩阵中原创 2022-03-08 20:05:47 · 235 阅读 · 0 评论 -
剑指offer之跳台阶
剑指offer之跳台阶题目描述解题思路题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。数据范围:1 ≤n≤40要求:时间复杂度:O(n) ,空间复杂度: O(1)示例1输入:2返回值:2说明:青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2 .示例2输入:7返回值:21解题思路考虑这个过程很重要,也就是说考虑问题的思想,这里其实是动态规划跳到第n个台阶,原创 2022-03-07 15:19:22 · 614 阅读 · 0 评论 -
剑指offer之链表中环的入口结点
剑指offer之链表中环的入口结点题目描述方法一题目描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n≤10000,1<=结点值<=10000要求:空间复杂度 O(1),时间复杂度 O(n)方法一解题思路:利用set,遍历结点加入set,当加入set失败时,说明有重复结点,即环的入口结点。/* public class ListNode { int val; ListNode next = null;原创 2022-03-07 14:23:07 · 604 阅读 · 0 评论 -
剑指offer之链表中倒数最后k个结点
剑指offer之链表中倒数最后k个结点题目描述方法一题目描述输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。示例1输入:{1,2,3,4,5},2返回值:{4,5}说明:返回倒数第2个节点4,系统会打印后面所有的节点来比较.示例2输入:{2},8返回值:{}方法一解题思路:快慢指针法:先让qucik指针走K步,slow指针再走,当quick指针指向null时,返回slow指针即可。i原创 2022-03-07 08:55:37 · 229 阅读 · 0 评论 -
剑指offer之两个链表的第一个公共结点
剑指offer之两个链表的第一个公共结点题目描述方法一题目描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)数据范围: n≤1000要求:空间复杂度 O(1),时间复杂度 O(n)输入描述:输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共部分。 后台会将这3个参数组装为两个链表,并将这两个链表对应的头节点传入到原创 2022-03-04 17:04:29 · 376 阅读 · 0 评论 -
剑指offer之求1+2+3+...+n
剑指offer之求1+2+3+...+n题目描述方法题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围: 0 <n≤200进阶: 空间复杂度 O(1) ,时间复杂度 O(n)方法解题思路:使用递归解法最重要的是指定返回条件,但是本题无法直接使用 if 语句来指定返回条件。条件与 && 具有短路原则,即在第一个条件语句为 false 的情况下不会去执行第二个条件语原创 2022-03-03 09:31:20 · 214 阅读 · 0 评论 -
剑指offer之调整数组顺序使奇数位于偶数前面(二)
剑指offer之调整数组顺序使奇数位于偶数前面(二)题目描述方法一错解题目描述输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。数据范围:00≤n≤50000,数组中每个数的值 0≤val≤10000要求:时间复杂度 O(n),空间复杂度 O(1)方法一解题思路就是如果前面的数一直为奇数就++,如果原创 2022-03-02 08:54:33 · 136 阅读 · 0 评论 -
剑指offer之从尾到头打印链表
剑指offer之从尾到头打印链表题目描述题解一题目描述输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。如输入{1,2,3},返回一个数组为[3,2,1]0 <= 链表长度 <= 10000题解一解题思路:利用栈先进后出的特性,遍历链表,push进栈,再定义一个数组,pop出栈。/*** public class ListNode {* int val;* ListNode next = null;**原创 2022-03-01 08:50:08 · 707 阅读 · 0 评论 -
剑指offer之替换空格
剑指offer之替换空格题目描述题解一题目描述请实现一个函数,将一个字符串s中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。数据范围:0≤len(s)≤1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。进阶:时间复杂度 O(n) ,空间复杂度 O(n)题解一解题思路:定义一个字符串str,遍历s, 当遍历到非空格,str+=s.chatAt(i),遍历到空格,stt+="%20"。im原创 2022-02-28 15:18:16 · 228 阅读 · 0 评论 -
剑指offer之数组中重复的数字
剑指offer之数组中重复的数字题目描述题解一题解二题解三题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1。数据范围:0≤n≤10000进阶:时间复杂度O(n),空间复杂度O(n)题解一解题思路:定义一个新的数组a[n],遍历所给的数组numbers,当遍原创 2022-02-27 21:25:17 · 318 阅读 · 0 评论
分享