![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
三石大数据
专注大数据面试分享!全网同名
展开
-
Leetcode SQL会员题【吐血总结~~】第三天
1084. 销售分析 III1097. 游戏玩法分析 V1098. 小众书籍1107. 每日新用户统计1112. 每位学生的最高成绩1113. 报告的记录1126. 查询活跃业务1127. 用户购买平台1132. 报告的记录 II1141. 查询近30天活跃用户数1142. 过去30天的用户活动 II1148. 文章浏览 I1149. 文章浏览 II1158. 市场分析 I1159. 市场分析 II1164. 指定日期的产品价格1173. 即时食物配送 I1174. 即时食原创 2022-04-08 09:58:26 · 4659 阅读 · 1 评论 -
【剑指offer】面试题集锦
数据结构数组字符串链表树栈和队列算法原创 2021-06-20 09:55:40 · 156 阅读 · 0 评论 -
【剑指offer】栈和队列
栈和队列面试题9:用两个栈实现队列解题思路我们可以举一个实际的例子进行分析,记住栈是先进后出,队列是先进先出的规则;首先初始化两个栈stack1和stack2(打算先将元素入栈stack1,然后再出栈到stack2),如果stack2不为空,那么删除队列头就等于弹出stack2的栈顶元素,如果stack2为空,那么就把stack1的元素逐个弹出并压入stack2中;插入到队列的尾部就可以直接 插入到stack1。总结:第一个栈支持插入操作,第二个栈支持删除操作源代码class CQueu原创 2021-06-20 09:52:13 · 99 阅读 · 0 评论 -
【剑指offer】树
树面试题7:重建二叉树【**】解题思路通过前序遍历可以找到二叉树的根节点,直接在中序遍历中定位根节点,我们又可以知道左子树和右子树的长度,直接在前序遍历中定位左子树和右子树的位置【左右索引】,接下来就是递归的过程了源代码HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); // 建立一个map,提高根节点定位的效率int[] preorder; // 保留先序遍历的值,递归的时候需要使用原创 2021-06-20 09:50:53 · 86 阅读 · 0 评论 -
【剑指offer】链表
链表面试题6:从尾到头打印链表解题思路解法1:我首先想到的就是先遍历链表,然后先存入到一个list中,然后再遍历list,对空的数组进行反向赋值。解法2:官方是利用的栈的存储方式,因为栈的特点就是后进先出。从链表的头节点开始,依次将每个节点压入栈内,全部入栈后,依次弹出栈内的元素并存储到数组中。源代码解法1:public int[] reversePrint(ListNode head) { ArrayList<Integer> list = new ArrayL原创 2021-06-20 09:49:28 · 87 阅读 · 0 评论 -
【剑指offer】字符串
字符串面试题5:替换空格解题思路由于java中的字符串被设计成不可变类型,因此无法修改字符串中的某一位字符,如果想实现替换空格,那么必须新建一个字符串。具体做法:利用StringBuilder类来新建一个字符串用于存放最终输出的结果。源代码class Solution { public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for (char c原创 2021-06-20 09:48:28 · 93 阅读 · 0 评论 -
【剑指offer】数组
数组面试题3:数组中重复的数字解题思路第一种方法:我看到这个题目首先想到的方法是先排序,然后遍历这个数组,如果前一个数字等于后面一个数字,那么就存在重复的数字! 时间复杂度O(nlogn)第二种方法:这个题目是在找重复的数字,哈希表的特性就是存储无重复的元素,于是我们可以考虑利用这个去存储数组中的所有元素,具体做法是 遍历数组,判断该数字是否在哈希表中,在的话就直接返回,不在的话加入哈希表中。(这是一种以空间换时间的常用做法) 时间复杂度O(n) 空间复杂度O(n)第三种方法:原地交换,这原创 2021-06-20 09:46:35 · 104 阅读 · 0 评论