随笔分类 -  程序员代码面试指南

1 2 3 下一页

[程序员代码面试指南]总结(待更新)
摘要:栈 栈的基本操作 题目:栈的压入、弹出序列[剑指Offer] 题解:理解题目即可。 辅助栈:作用:1.翻转 2. 与栈配合,同序保存栈每一状态对应的东西。 题目:两个栈实现队列 [剑指Offer][思路] 题解:入队push:正常;出队pop:从辅助栈pop。(pop时若辅助栈为空,则把栈顶元素依次 阅读全文

posted @ 2019-07-16 22:33 coding_gaga 阅读(249) 评论(2) 推荐(1) 编辑

[程序员代码面试指南]递归和动态规划-数字字符串转换为字母组合的种数(DP)
摘要:题意 给一个字符串,只由数字组成,若是'1' '26',则认为可以转换为'a' 'z'对应的字母,问有多少种转换方法。 题解 状态转移很好想,注意dp多开一位,dp[0]为dp[2]的计算做准备。dp[i]表示到索引为i 1的字符(含)为止转换方法数。 代码 public class Main { 阅读全文

posted @ 2019-06-24 23:09 coding_gaga 阅读(581) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]二叉树问题-派对的最大快乐值
摘要:题意 一棵多叉树代表员工的上下级关系,孩子节点是父节点的直接下级。节点代表员工,属性包括快乐值和孩子节点列表。 大家参加了party,要求一个员工去了则它的所有直接下级都不能去,问参加party能得到的最大快乐值是多少。 题解 我原本的思路是一层员工去不去是它上面一层去和不去两种状态转移过来的,但是 阅读全文

posted @ 2019-06-24 23:04 coding_gaga 阅读(755) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]最长递增子序列(二分,DP)
摘要:题目 例:arr=[2,1,5,3,6,4,8,9,7] ,最长递增子序列为1,3,4,8,9 题解 step1:找最长连续子序列长度 dp[]存以arr[i]结尾的情况下,arr[0..i]中的最长递增子序列的长度。 额外加一个ends[]数组,初始化ends[0]=arr[0],其他为0。有一个 阅读全文

posted @ 2019-06-23 16:20 coding_gaga 阅读(257) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]递归和动态规划-数组中的最长连续序列
摘要:题目 给定无需数组arr,返回器中最长的连续序列的长度。 举例子:arr=[100,4,200,1,3,2],最长连续序列为[1,2,3,4],返回4. 题解 法一:排序,再遍历找。时间复杂度O(nlogn),空间复杂度O(n) 法二: 用map,key代表遍历过的某个数,value代表key这个数 阅读全文

posted @ 2019-06-23 12:04 coding_gaga 阅读(147) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]二叉树问题-统计完全二叉树的节点数
摘要:题意 计算完全二叉树节点数。 题解 不使用遍历方法,优化时间复杂度到O(H^2)。 高度为h的满二叉树节点数为2^h 1。 设计递归函数search(Node root,int h,int H),返回当前节点roo为根的完全二叉树的节点数。h代表该节点在的高度,高度从1计算,H代表原始二叉树的高度始 阅读全文

posted @ 2019-06-22 00:44 coding_gaga 阅读(649) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]判断字符数组中是否所有字符只出现一次(堆排序)
摘要:题意 如题,并要求额外空间复杂度为O(1)。 题解 若不要求额外空间复杂度。普通做法时间复杂度O(n). 此题思路是先排序,然后判断相邻两个是否有重复元素。时间复杂度O(n),空间复杂度O(1). 堆排序再理解 堆排序步骤 1、堆的初始化,从最后一个非叶节点为根调整,向前一个个节点为根调整。 2、从 阅读全文

posted @ 2019-06-18 23:08 coding_gaga 阅读(384) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]9-输出数据流中位数(堆)
摘要:题意 随着数据流的读入,输出中位数,若当前度入数据有偶数个则取中间两个平均值。 题解 大根堆维护小的一半数,小根堆维护大的一半数。 插入时间复杂度O(logn),查找时间复杂度O(1)。 相关 Java中优先队列是用堆实现的。 todo compare的返回值控制比较、排序还是搞不太懂==。 代码 阅读全文

posted @ 2019-06-15 00:01 coding_gaga 阅读(223) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]第9章-一种消息接收并打印的结构(链表)
摘要:题意 数据流读入数字(保证 =1),i最初=0,当i+1出现时,输出i+1及其后连续的输入过的数字,否则什么也不输出。 例子: 输入:1 输出:1 输入:3 输出: 输入:4 输出: 输入:6 输出: 输入:2 输出:2 3 4 题解 用链表+headMap+tailMap存。 总时间复杂度O(n) 阅读全文

posted @ 2019-06-15 00:00 coding_gaga 阅读(167) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]字符串问题-最小包含子串的长度
摘要:题意 给串A和串B,找到A包含B所有出现字符(相同字符出现几次就要包含几次)的最小子串,输出子串长度 题解 维护一个窗口作为当前考察子串,使用一个hashmap记录每个字符在当前子串已出现情况。时间复杂度O(n). 代码 阅读全文

posted @ 2019-06-13 23:58 coding_gaga 阅读(355) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]二叉树问题-判断t1树是否包含t2树的全部拓扑结构、[LeetCode]572. 另一个树的子树
摘要:##题目1 解 先序遍历树1,判断树1以每个节点为根的子树是否包含树2的拓扑结构。 时间复杂度:O(M*N) 注意区分判断总体包含关系、和判断子树是否包含树2的函数。 ###代码 public class Main { public static void main(String args[]) { 阅读全文

posted @ 2019-06-13 00:20 coding_gaga 阅读(278) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]二叉树问题-在二叉树中找到两个节点的最近公共祖先、[LeetCode]235. 二叉搜索树的最近公共祖先(BST)(非递归)
摘要:##题目 ###题解 法一: 按照递归的思维去想: 递归终止条件 递归 返回值 1 如果p、q都不在root为根节点的子树中,返回null 2 如果p、q其中之一在root为根节点的子树中,返回该节点 3 如果p、q都在root为根节点的子树子树中,返回root节点 代码逻辑: 1 如果是遍历到nu 阅读全文

posted @ 2019-06-13 00:15 coding_gaga 阅读(235) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]二叉树问题-在二叉树中找到累加和为指定值的最长路径长度
摘要:题意 给定二叉树头结点和targetSum,打印等于targetSum的最长路径长度。 题解 是数组和等于给定值的最长子串长度的二叉树版,思想相同。 在前序遍历的过程中,找到从根节点到当前节点的满足题意的最长长度maxLen。最后得到所有节点对应的maxLen的最大长度。 代码 阅读全文

posted @ 2019-06-04 23:54 coding_gaga 阅读(265) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]数组和矩阵-求最短通路值(BFS)
摘要:题意 给二维矩阵 1、0组成,问从左上角到右下角的最短通路值。 题解 BFS基础。头节点入队;对队内每个节点判断、处理,符合条件的入队;到了终点节点返回。 相关知识 Queue为接口,LinkedList为该接口的一个实现。 代码 public class Main { public static 阅读全文

posted @ 2019-06-04 20:55 coding_gaga 阅读(314) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]9-判断点在三角形内
摘要:判断点在三角形内 四种方法: 1 面积法(由于精度的损失不太方便使用) 2 当点逆时针,分别判断点是否满足在三个向量的左侧 3 对每条边的向量,判断点和三角形剩下的顶点在该向量的同一侧 4 重心法(速度快) 相关知识 两个向量的叉积 向量积可以被定义为: 模长:| c |=| a × b |=| a 阅读全文

posted @ 2019-06-04 00:00 coding_gaga 阅读(459) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]链表问题-向有序的环形链表插入新节点
摘要:题意 给定非递减循环链表的头节点,和一个待插入的值,将其插入循环链表。 题解 遍历一遍,找到插入位置则返回;若没找到,说明插到头节点尾节点间,注意区分插入的是最大值还是最小值,返回的头节点不一样。 代码 public class Main { public static void main(Stri 阅读全文

posted @ 2019-06-01 23:58 coding_gaga 阅读(137) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]链表问题-按照左右半区的方式重新组合单链表
摘要:题意 把链表分成左右半区,奇数个节点则右半区长一点,重新交叉排列成链表,如下例: 1,2,3,4,5, = 1,3,2,4,5, 1,2,3,4, = 1,3,2,4, 题解 找到分割点,拆开再合并。 代码 阅读全文

posted @ 2019-06-01 23:53 coding_gaga 阅读(133) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]链表问题-单链表的选择排序(选择排序)
摘要:题意 给定一个无序单链表的头节点head,实现单链表的选择排序。 题解 按选择排序方法:每次从原链表找出最小值,从原链表删除,插入新的有序链表。 时间复杂度O(n^2) 额外空间复杂度O(1) 代码 public class Main { public static void main(String 阅读全文

posted @ 2019-05-31 22:58 coding_gaga 阅读(450) 评论(0) 推荐(0) 编辑

[程序员代码面试指南]链表问题-删除无序链表中重复出现的节点
摘要:题意 如题 题解 使用HashSet。 时间复杂度O(n),额外空间复杂度O(n)。 todo 使用选择排序也可以做。 代码 阅读全文

posted @ 2019-05-31 22:55 coding_gaga 阅读(143) 评论(0) 推荐(0) 编辑

[程序员面试代码指南]链表问题-判断一个链表是否是回文结构(链表)
摘要:题目 如题 题解 步骤 1 找到链表中点, 2 翻转右半部分, 3 断开两侧,从两个链表头开始判断节点值相同。 4 然后再将右侧链表翻转回来 复杂度 时间O(n) 空间O(1) 代码 阅读全文

posted @ 2019-05-31 00:41 coding_gaga 阅读(357) 评论(0) 推荐(0) 编辑

1 2 3 下一页
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示