02 2023 档案

摘要:题目: 思路: 【1】利用内置函数的方式 【2】利用双指针的方式,因为本质上就是回文字符串两边是相等的。 【3】基于双指针上面做位运算进行优化加快效率 【基于位运算的大小写转换技巧】 观察如下四个字母的ASCII码值。 'A': 65 = 1000001 'a': 97 = 1100001 'Z': 阅读全文
posted @ 2023-02-28 18:24 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】先汇总再计算,先得到总数,再根据左边的累加数*2+当前值如果等于总数即判断成功。 代码展示: 先汇总再计算: //时间0 ms击败100% //内存42 MB击败73% //时间复杂度:O(n),其中 n 为数组的长度。 //空间复杂度:O(1) class Solution 阅读全文
posted @ 2023-02-28 17:32 忧愁的chafry 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】两道题很相似,一个算下标是从0开始,一个是从1开始,这就是区别之处 【2】思路:暴力双循环,然后可以优化的就是在暴力之上又做二分,但将复杂度由O(N^2)降为了O(nlogn) 【3】但是更优的是利用有序数组这个条件,采用双指针,因为但和小的时候必然向右移,当和大的时候必然左移 阅读全文
posted @ 2023-02-28 16:49 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】动态规划 【2】递归的方式 代码展示: 递归的方式(但是性能不佳): //时间93 ms击败5.3% //内存41.6 MB击败6.94% class Solution { public boolean isMatch(String s, String p) { // 如果字符 阅读全文
posted @ 2023-02-27 14:58 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】采用深度遍历的方式 【2】采用广度遍历的方式 代码展示: 采用广度遍历的方式: //时间3 ms击败6.94% //内存41.7 MB击败74.94% //时间复杂度:O(N^2),其中 N 是树的节点数。 //空间复杂度:O(N),其中 N 是树的节点数。空间复杂度主要取决于 阅读全文
posted @ 2023-02-27 13:27 忧愁的chafry 阅读(16) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】大小顶堆的方式(优先队列): 【2】有序集合 + 双指针(差不多就是采用双指针加有序集合模拟两个堆的感觉) 代码展示: 有序集合 + 双指针的方式: class MedianFinder { // 第一个Integer存放数值 第二个Integer存放该数值的个数 TreeMa 阅读全文
posted @ 2023-02-24 16:29 忧愁的chafry 阅读(20) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】暴力是比较容易超时的,然后我有考虑使用堆排序,貌似不太行,排完序,还是需要多次遍历。 【2】使用归并算法 代码展示: 基于归并排序的方式: //时间35 ms击败25.1% //内存49 MB击败71.27% //时间复杂度:同归并排序 O(nlog⁡n)。 //空间复杂度:同 阅读全文
posted @ 2023-02-24 15:34 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑
摘要:介绍 【1】本文仅对简单认证和摘要签名认证方式做了记录(本质上对接不难,难在对于生成签名的字符串一个都不能错,反正我是觉得,干脆记录下来好了,天天看玄里玄乎的文档去猜想,怕不是有大病吧) 代码展示 QueryExpressUtil.java(自己编辑的快递查询工具类) import cn.hutoo 阅读全文
posted @ 2023-02-24 11:17 忧愁的chafry 阅读(200) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】逐次统计个位、十位、百位......1出现的次数,做和即可 代码展示: //时间0 ms击败100% //内存38 MB击败90.14% class Solution { public int countDigitOne(int n) { int ans = 0; long b 阅读全文
posted @ 2023-02-24 10:53 忧愁的chafry 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】看到这里,我首先想到的是使用队列来完成,因为用一个辅助空间存储最大值即可,思路可以参考 面试题59 - II. 队列的最大值 。里面内容很相似,问如果每次往对里面添加数据,然后可以通过某个函数获取到里面的最大值。当然有用双循环的方式其实是都可以做的,但是这样耗时会更大,因为需要 阅读全文
posted @ 2023-02-23 12:29 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】利用递归的方式【这种其实是最好理解的】 对于任意一颗树而言,前序遍历的形式总是【根节点总是前序遍历中的第一个节点】: [ 根节点, [左子树的前序遍历结果], [右子树的前序遍历结果] ] 中序遍历的形式总是: [ [左子树的中序遍历结果], 根节点, [右子树的中序遍历结果] 阅读全文
posted @ 2023-02-22 13:56 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】简单暴力的方式就是全遍历,使用辅助空间Map记录所有节点的,然后根据其中一个节点,将其链条内的节点【即从根目录】都塞入Set中,然后第二个节点也如一样的方式,当第一个出现的共同父节点既是公共先祖。 【2】使用递归的方式:可以判断出根据两个子节点的返回值 【3】构建示例代码: 构 阅读全文
posted @ 2023-02-22 12:15 忧愁的chafry 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】首先这题不难,难的是对题目的理解,说的很绕,但是很简单:就是节点p 和 q遇到的第一个将它们分在两边的节点,就是公共先祖。 代码展示: //时间5 ms击败100% //内存42.4 MB击败71.74% //时间复杂度:O(n),其中 nnn 是给定的二叉搜索树中的节点个数。 阅读全文
posted @ 2023-02-21 11:05 忧愁的chafry 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】感觉考察的是对函数的内置逻辑的理解和重点思考如何使用java写出空间复杂度为O(n)的算法。 代码展示: //时间8 ms击败31.44% //内存41.6 MB击败29.24% //利用函数的写法,巨简洁 class Solution { public String reve 阅读全文
posted @ 2023-02-20 14:58 忧愁的chafry 阅读(16) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】这道题本身有点类似于判断是否为(101. 对称二叉树) ,不过本身的话其实也是考虑能不能在原本的节点上变化,还是必须要开一棵新树。而且基于递归的方式是最简单的,虽然容易造成递归层次很深,但是用循环遍历树有些情况确实不好搞。 代码展示: //时间0 ms击败100% //内存39 阅读全文
posted @ 2023-02-20 11:53 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】递归便是最简单的处理方法,首先头结点是要不等于null就可以了,然后将两个节点当做新的头结点进行判断。 【2】迭代的方式(相当于利用循环替代递归) 代码展示: 迭代的方式: //时间1 ms击败21.98% //内存40.9 MB击败5% //时间复杂度:O(n)。 //空间复 阅读全文
posted @ 2023-02-17 17:08 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】拿到树或者链表的话其实少不了是要遍历的,而树的遍历存在三种:先序遍历(根左右),中序遍历(左根右),后序遍历(左右根)。而我们发现如果是数字的话其实中序遍历是最符合我们的要求的。如: 【2】基于中序遍历,将数据按顺序放入数组中。 【3】进行优化:1.首先题目求得是第几个,所以不 阅读全文
posted @ 2023-02-17 15:37 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】简单思路:如何两个链表是有序的,且要合并,那么情况分为: 1)其中一条链表是空的,返回另外一条 2)两条都不为空: 【1】当两条都存在数据时,要进行比较,然后取小的塞入新链表中。 【2】当一条遍历尽了,那么另一条要自动接上去 代码展示: 简单思路的实现: //时间0 ms击败1 阅读全文
posted @ 2023-02-17 12:26 忧愁的chafry 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】一种是比较好写的,采用辅助空间,一般采用队列,因为先进先出,方便操作: 1.将节点塞入队列 2.循环判断队列是否为空,不为空则要进行处理 3.此时队列里面的数据量为一组数据 4.将这一组数据的节点都拿出来,将值组合成新数组,且判断左节点是否为空,不为则塞入队列,再判断右节点(基 阅读全文
posted @ 2023-02-16 18:19 忧愁的chafry 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】自而上的递归 代码展示: 自而上的递归的方式: //时间0 ms击败100% //内存41.3 MB击败46.46% /** * Definition for a binary tree node. * public class TreeNode { * int val; * 阅读全文
posted @ 2023-02-16 17:52 忧愁的chafry 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】自顶向下的递归 【2】自底向上的递归 代码展示: 自底向上的递归的方式: //时间0 ms击败100% //内存41.1 MB击败52.64% class Solution { public boolean isBalanced(TreeNode root) { return 阅读全文
posted @ 2023-02-16 17:30 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】由于输入的是int整数,那么其实并不一定要使用函数转成二进制的字符串,通过位移的方式一样可以达到像二进制一样的判断,但这里会有些问题,因为位移存在,左位移和右位移,首先左移的话是存在向末尾补0的操作,而右移的话,如果是正数,是会在高位补0,而负数则会补1。但基于条件给定正数,故 阅读全文
posted @ 2023-02-16 16:26 忧愁的chafry 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】由于题目没有说明输入是无序的还是有序的,默认是无序,然而在无序中,如【4,7,5,9,2】我们比较难准确的知道是否需要鬼来填充。所以考虑将数组先进行排序。排完序之后就好处理很多了,针对顺序数组,我们知道如果出现重复的数字必然不可能成为顺子。那么其他的就要看间隔的数字与鬼牌的数量 阅读全文
posted @ 2023-02-15 14:19 忧愁的chafry 阅读(36) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】暴力的双指针循环处理的方式:基于题目限制,至少含有两个数,众所周知,x = x/2 + x/2,而在编程中会出现小数被遗弃的情况,所以当x=15时,一半是7,而7+8=15,故应该将边界值调大一些 limit = target/2 + 1; 然后基于数学公式计算多个有序的数的和 阅读全文
posted @ 2023-02-15 01:58 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】最简单的直接遍历的方式:这个思路是基于,首先一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内,这就说明了这是一串连续的数字,且会与下标有一定联系,当不缺失的时候,下标与数值一 一对应,故直接遍历且比对下标即可。 【2】基于最简单的方式的理 阅读全文
posted @ 2023-02-15 01:04 忧愁的chafry 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】使用辅助变量,和构建使用的偏移数据组合,然后在单次循环中对数据进行塞入 【2】不使用辅助空间,按照模拟的思维,使用四个变量记录范围值,然后按照逻辑遍历塞入数组,其中需要特殊处理的便是最后形成一行或一列的情况。 代码展示: 使用辅助变量进行单循环: //时间3 ms击败20.1% 阅读全文
posted @ 2023-02-14 15:41 忧愁的chafry 阅读(18) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】本身在于边界的判断,但是对于一开始添加一个节点这个做法虽然能过,但是不太严谨,应该采取后面那种,因为如果链表的目标值就是0的话,那么第一种就坐蜡了。 代码展示: //时间0 ms击败100% //内存41 MB击败54.94% /** * Definition for sing 阅读全文
posted @ 2023-02-14 00:54 忧愁的chafry 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】一种是先遍历数组,记录字符的个数,然后第二次遍历的时候取出,因为限制小写字母可以考虑int的26个数组记录,节约开销。 【2】当然第二种是遍历字符,因为只有26个,所以只需要遍历26次,但是在里面设计到两次查找,这种对于数据量大的时候是起到很大的优化。减少遍历的时间。 代码展示 阅读全文
posted @ 2023-02-13 18:55 忧愁的chafry 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】这道题本身直接用暴力的方式好像都能过,只要计算出最大值可以用函数的话就:(int)(Math.pow(10, n) - 1); 【2】但是这里其实没有考虑大数,就是超出Int范围之类的这种,这种就需要使用字符串。 代码展示: 普通遍历方法: //时间1 ms击败73.8% // 阅读全文
posted @ 2023-02-13 18:09 忧愁的chafry 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】利用排序来完成,优先将数组排序,那么数组中间的值肯定是存在最多的元素。【但是由于考虑到最优的排序算法的时间复杂度也是O(N*longN),其实不满足进阶条件,但是可以解决问题】 【2】利用额外的存储空间来解决,也就是使用Map来进行存储数值,然后将超过半数的那个元素拿出来。【这 阅读全文
posted @ 2023-02-13 17:27 忧愁的chafry 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】借用辅助空间的方式:利用set存储其中的一条链表,当另一条链表遍历的时候在set判断是否已存入。 【2】利用倒叙的思维,由于相交的部分都是末尾,所以可以考虑剪刀长链表的较长部分,因为这部分绝对不可能相交,如A链表是5,B链表是8,那么相交的部分是小于等于5的。 【3】基于步骤2 阅读全文
posted @ 2023-02-13 17:22 忧愁的chafry 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】基于双循环暴力破解的方式也是可以做的,基于辅助空间Set的做法也是可以做的(单次遍历,碰到set里面能够组合成结果的就将两个返回) 【2】循环加双指针的处理方式 代码展示: 循环加双指针的处理方式: //时间1 ms击败99.72% //内存60.3 MB击败35.14% // 阅读全文
posted @ 2023-02-13 16:04 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】动态规划,利用F(N)=F(N-1)+F(N-2)的公式。 【2】矩阵快速幂(重点难以理解) 【3】通项公式:根据递推方程 f(n)=f(n−1)+f(n−2),我们可以写出这样的特征方程:x^2 = x + 1。 【但这种只限于爬楼梯,因为如果要除某个数的话直接拿结果除是不合 阅读全文
posted @ 2023-02-13 14:25 忧愁的chafry 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】简单点的思路就是先排序,再取出K个最小的值,如果没有做限制的话,使用sort函数就好了,如果限制函数的话,其实可以考虑快速排序和选择排序,快排的话不一定比选择排序更优,如果K很小的话其实选择排序会比快排更快,不过冒泡和选择两种排序的时间复杂度都是O(N)。但是解答时候明显使用快 阅读全文
posted @ 2023-02-11 16:14 忧愁的chafry 阅读(16) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】其实这道题和 19. 删除链表的倒数第 N 个结点 这题差不多,不过一个是要删除但是返回的依旧是首节点,而本体要求的是返回倒数第几位的节点。 【2】其次这道题的限制条件没有给出的很明确,如果K比链表长度还大呢。貌似都不需要处理,尬的一批。 代码展示: //时间0 ms击败100 阅读全文
posted @ 2023-02-10 17:12 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】题目要求也简单,奇数在左半边,偶数在右半边,那么基于此,采用双指针才是最快,也是最省事的,毕竟只要遍历一次(这里指的是总量,但是代码用的循环会多一些)。拿到就将两个交换,然后各自移动一步,进行下一次循环。 【2】当然还有两次遍历的方法,但是本身就是基于双指针+一次遍历演化来的, 阅读全文
posted @ 2023-02-10 16:50 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】纯粹的模拟法 【2】数学解法,O(n) 示例:[0, 1, 2, 3, 4] 从最后剩下的 3 倒着看,我们可以反向推出这个数字在之前每个轮次的位置。 最后剩下的 3 的下标是 0。 第四轮反推,补上 mmm 个位置,然后模上当时的数组大小 222,位置是(0 + 3) % 2 阅读全文
posted @ 2023-02-10 14:45 忧愁的chafry 阅读(30) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】首先公式已经出来了,F(N) = F(N-1)+F(N-2),那么其实考虑额外的辅助空间的话是比较方便的,但是这种会造成空间复杂度为O(N)。如果考虑减少空间复杂度的话,其实需要两个变量作为记录公式里面F(N-1)与F(N-2)的值。这种对于每次查找都要计算,如果考虑复用次数多 阅读全文
posted @ 2023-02-10 13:22 忧愁的chafry 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】使用set的额外辅助空间记录,已经出现的数字,遇到重复的直接输出即可。 【2】不使用额外空间的话可以考虑先排序,再遍历,虽说也是一种解决的办法,但是一边在面试中别人不大愿意给你使用排序 【3】利用本身的限制采用hsah的方式映射到原本的数组上 代码展示: hash的方式处理: 阅读全文
posted @ 2023-02-10 11:42 忧愁的chafry 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】利用递归回溯的方式: 排列方案的生成【基本上是基于确定第一个,然后到确定第二个,...,再到确认最后一个(这里面涉及到了递归和循环,因为递归是一层层,而循环代表着这一层的可能性)】: 重复排列方案与剪枝【剪枝表示同一层遇到了放在同一位置的相同字符,这种应该跳过,从二叉树的角度的 阅读全文
posted @ 2023-02-09 15:52 忧愁的chafry 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】“下一个排列” 的定义是:给定数字序列的字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列) 【2】如何得到这样的排列顺序 1)希望下一个数 比当前数大,这样才满足 “下一个排列” 的定义。 因此只需要 将后面的「大数」与前面的「小数 阅读全文
posted @ 2023-02-08 15:24 忧愁的chafry 阅读(91) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】后序遍历定义: [ 左子树 | 右子树 | 根节点 ] ,即遍历顺序为 “左、右、根” 。 【2】二叉搜索树定义: 左子树中所有节点的值 < 根节点的值;右子树中所有节点的值 > 根节点的值;其左、右子树也分别为二叉搜索树。 【3】故可以采用递归的方式来进行处理: 采用递归的话 阅读全文
posted @ 2023-02-08 13:54 忧愁的chafry 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】构建乘积列表的方式,这种本身就是基于除法的思想,相比于暴力破解要进行多次计算,倒不如,遍历一次,然后进行除法,得到结果。可惜由于输入会存在0,所以除法是禁止的,但是问题不大,构建两个乘积表呗,一个记录左边乘积,一个记录右边乘积,然后结果便是将左乘积表的值和右乘积表的值拿出来相乘 阅读全文
posted @ 2023-02-06 17:44 忧愁的chafry 阅读(18) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】这道题本身的思路就是对树进行中序遍历,然后将其按中序遍历的顺序变成链表,而且在于不能创建新的节点: 【2】递归是最为简单的中序遍历: // 打印中序遍历 void dfs(Node root) { if(root == null) return; dfs(root.left); 阅读全文
posted @ 2023-02-06 16:19 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】本质上简单点的就是先扫描一次得到对应的个数,然后第二次扫描的时候,进行删除。 【2】基于上面这种在特殊情况下,又可以变为双指针,因为删除的N是必须不大于链表个数的,所以先一个指针先跑,但是在最差的情况,其实和双循环的效率是一样的,但是最优情况比双循环要少不少次数的扫描。 【3】 阅读全文
posted @ 2023-02-06 14:19 忧愁的chafry 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】这道题本质上不难【实际上可以参考 剑指 Offer 30. 包含min函数的栈 】,重点在于怎么处理最大数,和采用什么数据结构进行处理。不过简单点就直接采用LinkedList,毕竟是链表: 如正常队列输入 【1,2,3,4,5,6,7,8,9,8,7,8,5,4,6,7,2, 阅读全文
posted @ 2023-02-06 11:51 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】其实这个题和最大数是一样的,只是排序不同罢了,可以参考最大数 。 代码展示: //时间4 ms击败96.23% //内存41 MB击败70.47% class Solution { public String minNumber(int[] nums) { int len=nu 阅读全文
posted @ 2023-02-03 17:32 忧愁的chafry 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】映射表+模拟数值计算生成 【2】硬编码数字 代码展示: 映射表+模拟数值计算生成: //时间4 ms击败41.68% //内存40.9 MB击败81.71% //时间复杂度:O(1)。由于 映射表 长度是固定的,且这 13字符中的每个字符的出现次数均不会超过 3,因此循环次数有 阅读全文
posted @ 2023-02-03 15:30 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】双指针思路 代码展示: //时间4 ms击败58.43% //内存51.3 MB击败74.56% //采用双指针的方式 //本质上装水容量的大小取决于两边最小的短板乘上他们之间的距离 //如果移动短板的话有可能容量变多或者变少 //但是如果移动长板那么必然就是容量变少 clas 阅读全文
posted @ 2023-02-03 12:21 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】理解丑数的形成,基础的有1,2,3,5。但后面的基本在于与前面的相乘如下一批为4,6,10和6,9,15。所以丑数基本是以基础数*2或者*3或者*5来找出来的。基于这个,大概可以考虑最小堆的方式,或者考虑辅助空间记录的方式。 【2】最小堆的思路,这个思路本质上不一定要刚好填到N 阅读全文
posted @ 2023-02-02 18:14 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 另一种说法: 思路: 【1】这道题如果没有了解到公式的话基本摸瞎,暴力破解超时不可用 【2】确定所求数位的所在数字的位数 【3】确定所求数位所在的数字 【4】确定所求数位在 numnumnum 的哪一数位 代码展示: //时间0 ms击败100% //内存38.2 MB击败79.88% cl 阅读全文
posted @ 2023-02-02 16:04 忧愁的chafry 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】其实这道题相当于跳台阶的变种,其变化在于有限制的情况下是只允许跳一格,本质上还是可以用公式 F(N) = F(N-1) + F(N-2) 【2】采用递归的话,画一颗树出来可能会更加直观一些。 代码展示: 基于递归的处理方式: //时间0 ms击败100% //内存38.7 MB 阅读全文
posted @ 2023-02-02 13:53 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】碰到的时候最先想起的是深度优先和广度优先的遍历(后面发现了要用到辅助空间,那么用到辅助空间的话,其实还可以考虑动态规划) 【2】动态规划的方式(但其实这种相对更优,可能是由于空间换了时间) 代码展示: 动态规划的方式: //时间2 ms击败97.82% //内存43.8 MB击 阅读全文
posted @ 2023-02-01 17:45 忧愁的chafry 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】感觉常规思路比状态机要好理解,但是状态机怎么说,面试又需要真他妈忧愁 代码展示: 常规的思路解法: //时间1 ms击败100% //内存41.5 MB击败55.87% class Solution { public boolean isNumber(String s) { / 阅读全文
posted @ 2023-02-01 16:22 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】以下四种字符需要考虑: 首部空格: 删除之即可; 符号位: 三种情况,即 '+' , '− , '无符号' ;新建一个变量保存符号位,返回前判断正负即可。 非数字字符: 遇到首个非数字的字符时,应立即返回。 数字字符: 字符转数字: “此数字的 ASCII 码” 与 “ 0 的 阅读全文
posted @ 2023-02-01 15:30 忧愁的chafry 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】思路很简单,转为数组进行遍历,然后因为知道长度了,所以放进对应的位置即可 代码展示: //时间2 ms击败51.48% //内存41.6 MB击败30.61% //时间复杂度O(N) //空间复杂度O(N) class Solution { public String reve 阅读全文
posted @ 2023-02-01 14:49 忧愁的chafry 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】这道题本身就是简单题,其实只要一次遍历就会满足了,至于辅助空间,其实有的话效率会高一点。而且大多数并不会想知道你怎么解,而是想知道你有多少种解法。优缺点又是什么。 代码展示: //时间0 ms击败100% //内存39.4 MB击败59.62% class Solution { 阅读全文
posted @ 2023-02-01 13:43 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑